グローバルIPアドレスを自動で通知したい(2)

えーと…昨日書いた時点で、IPを取得するところまで書いたんでしたっけ…。正直、これ以上書くのがちょっとしんどいです(汗)

IPをとれるようになったので、あとはそれをメールで送りたいわけですが…この設定が分からない!ネットでいろいろと調べたのですが…。sendmailってやつの使い方がよく分かりませんでした…。インターネット上のsmtpサーバに接続するような使い方はできないんですかね…??

で、この際なので、自分でメール送信ソフトを作りました。C言語で。この前(といってもかなり前)ちょうどネットワークプログラミングの本を買っていたので、それを参考にして…。単純にsmtpサーバに対して、メール送信に必要なメッセージを送るだけのプログラムなのですが…半日かかりました(汗)やっぱり、プログラミングは自分で書いてないと、スラスラとはいきませんね…。おかげで、自動送信できるまで、結局昨日1日かかりましたよ(涙)

ま、そんな話はおいといて。とにかく、自作のメールクライアントとシェルスクリプトで、自動でメール送信してくれるようにできました。
以下がシェルスクリプトです。

ここから、

#! /bin/bash

cat /var/log/buffalo-router.log | grep "local address" | tail -n 1 > /home/"ユーザ名"/global-IP.txt
newIP=`echo \`cut /home/"ユーザ名"/global-IP.txt -d " " -f 11\``
oldIP=`echo \`cut /home/"ユーザ名"/old-global-IP.txt -d " " -f 11\``

if test $oldIP != $newIP
then
/home/"ユーザ名"/mysendmail "smtpサーバ名" < /home/"ユーザ名"/global-IP.txt
cp /home/"ユーザ名"/global-IP.txt /home/"ユーザ名"/old-global-IP.txt
fi

ここまでです。これで、mysendmailという自作ソフトを/home/"ユーザ名"ディレクトリに置いて…あと、old-global-IP.txtを作っておかないとエラーになるっぽいです。
touch old-global-IP.txtとかやっておけばいいです。

これで、このシェルスクリプトを実行すれば…やった!ケータイにメールが来た!やった、やった!

…でも、まだ終わりません(汗)
このスクリプトをcronとかいうやつで、5分置きに自動実行してくれるように設定しました。今回は、ホント始めて使うものばっかりで、つかれました…。1行だけ書けばいいので、設定自体は簡単なのですが、前段のスクリプトが相対パスだとエラーが出たり、書き直したら大文字小文字を間違えていたりと、なんだかんだで成功するまで30分以上かかりましたよ。

で、肝心のcronの設定は、crontab -eってコマンドを打って、あとはviと同じ勝手で(ていうかviを使ってるらしい?)以下の1行を書くだけです。書き込んだらすぐにcronが認識してくれるらしいので、再起動とかはいりません。お利口ですね(笑)

*/5 * * * * /home/"ユーザ名"/getGIP.sh

あ、書き忘れていましたが、シェルスクリプトの名前はgetGIP.shです。これで、やっと…5分置きにグローバルIPを調べて、変更があったら自動でメールでお知らせしてくれるシステムが完成しました!!長い戦いでした…!これだけ、ガツガツ調べて、プログラム書いて作ったシステムって、久しぶりです…。

もっと簡単なやり方ないんですかね?(汗)
あ、ちなみにまだ1回も変更通知は来てません。まだIPが変わってないみたいです。変わったときに本当に自動でメールが送られてくるのか、ちょっと不安です…。でも、最近あんまり変わってないからなぁ…。モデムの電源入れっぱなしだと、あんまり変わらないんですかね…?

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)