raspberry pi ラズパイでpythonを使ってみる
- M.Katono
- 2019年7月6日
- 読了時間: 2分
ラズパイにも少し慣れた。debian系のOSなので、普段Ubntuを使っているとほとんど違和感がない。携帯性を重視して、ハードオフで小さいキーボードを買ってみた。

キーボードは使えなくもないが、画面が小さくて見えない(特にターミナル)。
結局スマホにキーボードを繋いでSSHかVNCで使うのが便利。ただ、今まではLAN内だけでリモート接続していたが、インターネット経由でログインするにはちょっと対策が必要。
現在利用しているプロバイダはルーターの再起動をしたりするとグローバルIPアドレスが変わってしまうので、何かの拍子に外部からログインできなくなる可能性がある。仕方がないので数時間に一度自宅のグローバルIPアドレスを取得して前回と比べ、変わっていればEメールで新しいアドレスを送信するプログラムを作る。
・'http://ipecho.net/plane' に接続して自身のグローバルIPアドレスを知る
・取得したアドレスをファイルに保存し、自分宛てにメール
・2回目以降はファイルのアドレスと比較し、変わっていたらメール。
・実行ファイルにはSMTPのパスワードなども含まれるので、忘れずに権限を厳しくしておく。
・確認はcronを使って、とりあえず3時間毎。
pythonを使って何かやってみたかったので、ググりながら頑張って作った。はじめはJavaとかと比べるとpythonの文法が簡潔すぎて難しく感じた。最初はIPアドレスを保存せずに毎回メール送信してみたが、件数が多くてウザかったので変わったときだけ送信するようにした。
ちょうど昔作ったヤフーメールのアカウントがあったので、そこからGメールに送ることにする。ヤフーメールやGメールを使ったサンプルコードはネットを参考にさせていただき、SSLを使ってみた。ファイル入出力時のパス指定やカレントディレクトリなんかの雰囲気がイマイチよく分からなくて苦労。最初にold_ip.txtというファイルにIPアドレスの文字列を保存するつもりが、誤ってold_ip.txtというディレクトリを作ってしまった。そのせいでしばらく'IsADirectoryError'という聞いたこと無いエラーで悩んだが、その名の通り「それはディレクトリーだよ!」というエラーだった。
あとは、ファイルが存在しないと読み込み時にエラーになるので、最初に空のファイルを作ったらうまくいった。ファイルが存在する場合は、タイムスタンプを更新するらしい。
〜省略〜
file_path=pathlib.Path(os.path.join('old_ip.txt'))
file_path.touch()
〜省略〜
ちょっとpythonに慣れたので良かった。
Comments