ラズパイのWi-FiアドレスをSlackに通知する

Raspberry Piをモニタにつながずリモート環境で使っていると、いつOSが起動したのかわからなかったり、Wi-Fiアドレスが変わっていたりして使いにくく感じることがありますよね。

IPアドレスを知るにはモノクロLCDに接続して表示させる方法や、音声出力する方法がありますが、パーツを別途購入して回路を作らなければなりません。

そこで、Pythonスクリプトを用いてRaspberry Piの起動時にSlackにWi-FiのIPアドレスが書かれたメッセージを送ってみます。

前提条件

この記事を利用するには、下記の条件を満たしておく必要があります。

  • 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