今回は、前回の MyDNS.jp へのIP更新 を 自動化する。
さて、前回はDynamicDNSであるMyDNS.jpにIPアドレスを覚えさせて、
自分のドメインでアクセスできるようになったと思う。
しかし、毎回毎回何時変わるか分からないIPアドレスを、手動で更新するのは実際無理。
では、どうするかというと、自動で定期的にIPアドレスをMyDNS.jpに伝えてあげる必要がある。
さて、その方法はMyDNS.jp の使い方をみると
- メールソフトで定期的に受信しにいく。
- Linuxのcronに定期的にwgetつかってアクセスするスクリプトを書く。
の二種類だった。
メールソフトだと確かに設定は簡単だけど、ルーター内のWindowsマシンを立ち上げっぱなしにすることになる。
電気代もったいない! スマートじゃない!
ということで、後者の手段をとる。
Linuxのcronで定期的にwgetつかってアクセスするスクリプトを書く。
せっかく、サーバーを立てるんだし、サーバーにやらせないとね。
さて、MyDNS.jpさんを参考に少し変更する。
○ルートのcronではなく、別アカウントのcronで実行する。
なぜなら、rootのcronにはなんとなく触りたくなかったから。
○アクセスするだけだと、本当にアクセスされてるのか不安なのでログを残す。
○アクセスするスクリプトファイルを別に作成して、cronにはそのスクリプトファイルを実行させる。
まずは、作成するユーザーになり、ユーザーのホームディレクトリで、
$vi wget_mydns.sh
でファイルを作成。
中身は以下のとおり。
#!/bin/bash mydnsLogPath=/home/gomokuro/mydns.log echo `date` >> ${mydnsLogPath} wget -O - 'http://mydns123456:******@www.mydns.jp/login.html' | grep 'login_status\|MASTERID \|REMOTE ADDRESS\|ACCESS DAYTIME\|SERVER ADDRESS' >> ${mydnsLogPath} echo -e "\r\n" >> ${mydnsLogPath}
やってることは、簡単。
・本日の日付をログに吐く。
・mydnsにHTTPでアクセスして、その返ってくるHTMLのなかで必要そうな行をgrepで取得してログに吐く。
・最後にログを見やすくするために改行をいれる。
だが、このままでは動かない。
$chmod 775 ./wget_mydns.sh
で、実行権をつけてあげる。
そして、
$./wget_mydns.sh
で試しに実行してみる。
ちゃんとmydns.logが作成されていればスクリプトファイルは完成。
次にcronに登録する。$crontab -e
を実行する。
そして、下記のように記述する。
SHELL=/bin/bash
PATH=/sbin:/bin:/user/sbin:/usr/bin:/usr/local/bin
MAILTO=""
20 * * * * /home/gomokuro/wget_mydns.sh
これで、1時間ごとに20分になったらスクリプトファイルが実行される。
このあたりの頻度は好みで判断。一瞬でもページに繋がらなくなるのが嫌な方は数分ごとにしてもよい。
5分毎に実行したい場合は下記のように書く。
*/5 * * * * /home/gomokuro/wget_mydns.sh
以上で、自動でIPアドレスを伝えることができるようになったと思われる。