ラズパイのWi-FiアドレスをSlackに通知する
Raspberry Piをモニタにつながずリモート環境で使っていると、いつOSが起動したのかわからなかったり、Wi-Fiアドレスが変わっていたりして使いにくく感じることがありますよね。
IPアドレスを知るにはモノクロLCDに接続して表示させる方法や、音声出力する方法がありますが、パーツを別途購入して回路を作らなければなりません。
そこで、Pythonスクリプトを用いてRaspberry Piの起動時にSlackにWi-FiのIPアドレスが書かれたメッセージを送ってみます。
Contents
前提条件
この記事を利用するには、下記の条件を満たしておく必要があります。
- Slackのワークスペースを作成していること
- Raspberry PiにRaspbianがインストールされていること
- Raspberry Piがインターネットにつながっていて操作できる状態にあること
以上の条件を満たしていれば次へすすみます。
必要なライブラリをインストールする
まずは、PythonでSlackにメッセージを送るためのライブラリ「slackweb」をインストールしておきます。
$ pip install slackweb
続けて、Wi-FiのIPアドレスを取得するためのライブラリ「ipget」も用意します。
$ pip install ipget
他のOSでは標準の「socket」ライブラリでWi-Fiアドレスを取得できるようですが、自分の環境では「127.0.0.1」(いわゆるローカルホスト)のアドレスしか表示できませんでした。そのため「socket」はホスト名を取得する用途にのみ利用しています。
IPアドレスを取得できるかをチェックする
ライブラリのインポートが終わったら、Wi-FiのIPアドレスが正しく取得できるかをチェックしてみましょう。
$ python >>> import ipget >>> ip = ip_address = ipget.ipget() >>> print(ip.ipaddr("wlan0")) 192.168.0.164/24 ←Wi-FiのIPアドレス
このように、「print」命令を実行した際にIPアドレスが表示されれば成功です。「Ctrl」+「D」キーでpythonを抜けます。
Pythonスクリプトを作成する
では、Pythonスクリプトを作成します。ここではホームディレクトリ直下に「ip2slack.py」というファイルを作成する例で進めます。まずはnanoエディタを起動します。
nano ~/ip2slack.py
エディタが起動したら、下記のスクリプトを貼り付けましょう。
import slackweb import socket import ipget slack = slackweb.Slack(url = "https://hooks.slack.com/services/<slackのwebhookアドレス>") host = socket.gethostname() ip = ipget.ipget() message = host + " is ready. wlan" + str(ip.ipaddr("wlan0")) slack.notify(text="%s" % message)
4行目に<slackのwebhookアドレス>とありますが、これは下記のアドレスから取得できます。
https://slack.com/services/new/incoming-webhook
編集を終えたら「Ctrl」+「X」キーで保存して終了します。
ラズパイの起動時にPythonスクリプトを実行させる
スクリプトを保存したら、Raspberry Piが起動するたびに実行されるように設定しておきます。今回は「rc.local」にスクリプト起動用のコマンドを書き込んでおきます。下記のコマンドを実行してエディタを開きます。
sudo nano /etc/rc.local
エディタが開いたら、最下行「exit 0」の前に「/usr/bin/python /home/pi/ip2slack.py」と1行書き加えます。
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi /usr/bin/python /home/pi/ip2slack.py exit 0
このように書き込んだら「Ctrl」+「X」で上書きしてエディタを終了します。以上で、次回以降は起動するたびにSlackにラズパイのホスト名とIPアドレスが投稿されるようになります。
ぜひ、お試しを!
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント