グローバル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が変わってないみたいです。変わったときに本当に自動でメールが送られてくるのか、ちょっと不安です…。でも、最近あんまり変わってないからなぁ…。モデムの電源入れっぱなしだと、あんまり変わらないんですかね…?
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が変わってないみたいです。変わったときに本当に自動でメールが送られてくるのか、ちょっと不安です…。でも、最近あんまり変わってないからなぁ…。モデムの電源入れっぱなしだと、あんまり変わらないんですかね…?
<<ドラマ化! | HOME | グローバルIPアドレスを自動で通知したい(1)>>
COMMENTS
COMMENT FORM
TRACKBACK
| HOME |

