GLANTANKでWAN IPのアドレスをメールで通知する
GLANTANKに置いたデータを、会社や、実家、出先でアクセスしたいのでルーターの設定を外部からアクセスする為のポート番号を適当に決めて、GLANTANKにフォワードするように設定。でも、使いたいときに限ってWAN IPアドレスが変更されててアクセス出来んじゃないか…と言うときがあります。ま、普通は Dynamic DNSでも使うのでしょうが、それほど頻繁でもありませんので、自分の携帯にメールなりで通知してもらえりゃいいやと言うことで、簡単(と言うより手抜き)なスクリプトを書いてみました。実はもっと、簡単な方法があったりして…(^^;何にしても、あんまりスクリプトとかよく知らないので、めちゃ適当。
#! /bin/bash
fname="/tmp/status.htm"
oldfname=$fname".old"
#ルーターから、ステータス情報のHTMLを取得
wget http://172.16.0.254/status.htm --http-user=USER --http-passwd=PASSWORD -O $fname
#前回取得したステータス情報のHTMLファイルがあるか?無ければ、無条件でメールを送る
if [ -f $oldfname ]; then
#比較する
diff $oldfname $fname
#変化無しの場合リターンコード 0
if [ $? = 0 ]; then
echo IPアドレスは変更されていません。
rm $fname
exit 1
fi
echo IPアドレスが変更されました。
fi
#新しいIPをステータス情報のHTMの215行目から抜き出す
newip=$(sed -n 215p $fname)
#ステータス情報のHTMLを初めて取得したか、IPアドレスに違いがあった場合メールを送信
/usr/sbin/sendmail -t -i << EOF
From:FROM@xxxx.ne.jp
To:TO@xxxx.ne.jp
Subject:New IP.
New IP.
$newip
EOF
rm $oldfname
mv $fname $oldfname
I/O DATAのルーターはWebブラウザで色々設定できて、現在のWAN IPも見られるので、wgetでそのページを取得し、前回取得したページとdiffして、変化があれば、sedでIPアドレスが書かれた行を抜き出して、その行をsendmailメールで送信する、という単純な仕様。ま、こんなもんで良いや。
で、このスクリプトをchmod 700 スクリプトファイル名で、root権限のみ閲覧や実行が出来るように設定し、一時間に一回作成したスクリプトをcronで呼び出します。crontab -eで、設定します。
0 * * * * スクリプトファイル名
これで、毎時0分にスクリプトが呼ばれます。
で、確認すると…ちゃんと送られてくる!ヨッシャ!これで外からでもアクセス出来る。後は、今一時ファイルを作るのに多分HDDに書いていると思うので、RAMDISKとかにしたい所だけど、面倒なのでまた今度にしょうっと(^^;


最近のコメント