Yado_tech

旅館+ITとはなんぞ

Raspberry Piで起動時にローカルIPアドレスをSlackに投稿する

【前提】
フロントと玄関にラズパイ+C270でMjpg-streamerで監視カメラ作って仕込んでるんですが、 ルーターの設定が変えれないため静的にIPアドレス割り振れず、見失うと毎回ミニモニターを繋いでIPアドレスを確認していた。

【正直】
めちゃくちゃ面倒くさい+RasPiをもう一度再起動しなくてはいけないのでどうにかならんか。

【解法】
起動時に自身のIPアドレスをSlackに投稿すればいいんでねーの?

つかう技術は2つ

a-zumi.net

ipアドレスを取得してSlackに投稿する
SlackにはSlackwebを使う

qiita.com

ここからソース

import slackweb
import socket

slack = slackweb.Slack(url = "【slackで設定したWebhook URLのアドレス】")

ip = socket.gethostbyname(socket.gethostname())
slack.notify(text="IP:%s" % ip)

基本は5行だった。
これではあんまりかと思ったので体裁を整える。

import slackweb
import socket
import time

def post_to_slack():
    try:
        post()

    except:
        time.sleep(10)
        post_to_slack()

def post():
    slack = slackweb.Slack(url = "【slackで設定したWebhook URLのアドレス】")
    ip = socket.gethostbyname(socket.gethostname())
    slack.notify(text="IP:%s" % ip)

if __name__ == '__main__':
    post_to_slack()

繋がってなかったらどっかでエラー出るでしょうという精神。

2017/11/18追記

使おうと思ってラズパイに移植したらローカルループバックアドレス("127.0.0.1")になってしまった。 windows10上はうまく行っていたのにー。

てことでラズパイ用に若干変更

pip install ipgetでipgetモジュール導入した後に

import slackweb
import ipget
import time

def post_to_slack():
    try:
        post()

    except:
        time.sleep(10)
        post_to_slack()

def post():
    slack = slackweb.Slack(url = "【slackで設定したWebhook URLのアドレス】")
    ip = ipget.ipget()
    ipaddress = ip.ipaddr("eth0")
    slack.notify(text="hello,i am kitchen RPi and my IP is :%s" % ipaddress)


if __name__ == '__main__':
    post_to_slack()

LOGICOOL ウェブカム HD画質 120万画素 C270

LOGICOOL ウェブカム HD画質 120万画素 C270