DynamicDNS (ムームードメインとmyDNS.jp) 2

今回は、前回の 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アドレスを伝えることができるようになったと思われる。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>