RaspberryPiのIPを起動時にLINEで取得
SSHで通信する時にラズパイのIPが知りたくなるかと思います。
固定IPにしていても、接続するネットワーク毎に設定するのは正直面倒な気も…
そんな訳で、ラズパイを起動した際に、登録したLINEに対してIPをお知らせしてくれる機能を紹介します。
LINE Notifyのトークン取得
LINE Notifyのトークン取得に関しては以下の記事を参考にしてください!
⇒【Blue-black.inc】【超便利&お手軽】Python + LINE NotifyでLINEメッセージ送信
取得したトークンは後程使いますので、メモ等にコピペしておいて下さい。
起動時実行ファイルの作成
今回はPythonで記述します。
まずは起動時の参照が保証されている /opt ディレクトリに移動します。
1 |
$ cd /opt |
続いて、 /opt ディレクトリにファイルを作ってコードをコピペします。
1 2 |
$ sudo touch sendip.py $ sudo nano sendip.py |
コードは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# -*- coding: utf-8 -*- # import import requests import ipget # LINE notify token = 'xxxxxxxxxxxx' # 発行したトークンをコピペ url = 'https://notify-api.line.me/api/notify' headers = {'Authorization': 'Bearer ' + token} # IP Address IPADD = ipget.ipget() # LINEに通知 payload = {'message': '\n起動しました。\nIP:' + IPADD.ipaddr("wlan0")} res = requests.post(url, data=payload, headers=headers) |
基本的にコピペで問題なく、7行目に先程発行したトークンを入れてください。
サービス化して有効にする
これだけではただプログラムファイルを作っただけに過ぎないので、続いて起動時に実行するようにします。
まずはサービスファイルを作って書き込みます。
1 |
$ sudo nano /etc/systemd/system/sendip.service |
コピペする内容は以下の通り。
1 2 3 4 5 6 7 8 9 |
[Unit] Description = IP send by LINE [Service] ExecStart =/usr/bin/python3 /opt/sendip.py Type = simple [Install] WantedBy = multi-user.target |
サービスが登録されたか確認します。
1 2 |
$ sudo systemctl list-unit-files --type=service | grep sendip sendip.service disabled |
上記の2行目のように表示されればOKです。
disabledとなっていますが、登録しただけでまだ無効状態です。
以下のコマンドで有効にします。
1 |
$ sudo systemctl enable sendip |
そして、確認のため起動。
1 |
$ sudo systemctl start sendip |
これでLINEに対して通知が来たら問題ありません。
通知が来ない時
まずは状況の確認方法
1 |
$ sudo systemctl status sendip |
これで状況が表示されます。通常、エラー等がある場合はこの方法でエラー文を見てみましょう。
今回の場合は、おそらく多くの方が ipgetやrequestsがインストールされていないことによるエラーかと思います。
1 2 |
$ sudo pip3 install ipget $ sudo pip3 install requests |
上記のコマンドでインストールができるかと思います。
折角なので再起動して実際に実行されるか確かめてみましょう。
1 |
$ sudo reboot |
再起動には少し時間がかかるので気長に待ちましょう(数分経過したら多分失敗してます。)
参考にした記事
⇒【Blue-black.inc】【超便利&お手軽】Python + LINE NotifyでLINEメッセージ送信
⇒【Qiita】Systemdを使ってさくっと自作コマンドをサービス化してみる
最後に
LINE NotifyもSystemd(起動時に実行するやつ)も両方とも応用が利くと思いますので、今回のプログラム以外にも応用してIoTなどを作ってもらえればと思います!
今回のブログ曲
今回投稿中に聴いていた曲はこちら