(外向き)グローバルIPアドレスをLINEに通知する

スポンサーリンク

(あ)です。「Google Homeでできるラズパイ不要でおしゃべり」の番外編です。

前回の翌朝。インターネットから自宅サーバにつなごうとしたのですが、つながりません…

こんどは、なに?
と、思いながら、調べてみたところ…

ブロードバンドルーターの外側向きのIPアドレスが、変わっていました。

これでは、つながるはずがありません。

ルータの電源を切ったり、再起動など、割り当てが変わるきっかけは無い認識なのですが。

とはいえ、変わってしまうのなら仕方ありませんので、なんとか策を考えることにします。

(あ)が、自宅にいるときは、なんとでもなるので問題にはなりません。

外にいるときに、自宅ブロードバンドルーターの外部アドレスを補足する必要があります。

ここは、IFTTTを使って、スマホにラインで通知してもらう、ということにしました。

自宅ブロードバンドルーターよ外側のアドレスを知るには、
– 管理ページで確認
– 「確認くん」サイトの情報
を、思いつきました。

管理ページにアクセスして、というのは、できないことはないのでしょうが、かなり面倒になりそうです。認証を突破し、特定のURLの結果を解析して、といった手順かと思いますが、面倒です。

確認くんサイトですが、PCでアクセスして、送り返される情報を見ると、これも複雑で、(あ)の今のスキルでは、時間ばかりかかりそう。

もう少ししらべると、curlでurl叩くと、IPアドレスが帰ってくるglobalip.meというサイトを見つけました。

こんな感じです。

# curl globalip.me
aaa.bbb.ccc.ddd

ありがたや。(あ)のスキルにふさわしい戻り値です。

bashスクリプト化して、IFTTTに送るようにします。

#!/bin/bash
 VAR1=$(curl globalip.me)
 printf "curl -X POST -H \"Content-Type: application/json\" -d \'{\"value1\":\"" > curlcmd.sh
 printf $VAR1 >> curlcmd.sh
 printf "\",\"value2\":\"port1\",\"value3\":\"port2\"}'" >> curlcmd.sh
 printf ' https://maker.ifttt.com/trigger/gip/with/key/YOUR_KEY' >> curlcmd.sh
 echo '' >> curlcmd.sh
 printf "\"$VAR1\"\n"

# ifttt by curl
 bash ./curlcmd.sh
 echo ''
 echo 'done'
 date >> log/done.log
# eof

このコードはあまりにださいと思っていますが、まあ、動けばいいねってことにしています。

パラメータのvalue2とvalue3は、実際はポート番号を入れています。

送ってみます。

LNE Notifyチャンネルに通知されました。

このスクリプトは一発屋さんですので、定期的に動いてもらおう、ということで次は、定期実行を実現させようと目論みます。

Unix系OSで定期実行といったらcron

Unix系OSで定期実行といったらcronと、なりますので、設定してみます。

朝の7時くらいに通知がくれば、と思いますが、まずは、5分後を設定してみます。

通知きません。コンソールにも動作した形跡無しです。

毎5分に再設定。

通知きません。

どうやら、cronは動かないのか?と思われます。

方針変更して、bashスクリプトを常駐させ、何時間かおきに通知されるようにしてみます。

単純に、whileとsleepを使って、無限ループです。

sleepを3分に設定して試験したところ。

ようやく成功しました。

8時間のsleepにして、スクリプトを走らせて、寝ることにします。

Zzz

果たして8時間後!
通知きました。

その後の、数日間の動きを見ていると、午前0時を境に、外向けのIPアドレスが変わっている感じがします。

これで、不意な外部向けIPアドレスの変化にも、対応できたことになりました。

ただ、別の困ったことに、気付きました。

不意な、アンドロイドスマホの、再起動です。

コメント

タイトルとURLをコピーしました