IPアドレス自動更新スクリプト

■ Fedora7 / Fedora8 / Fedora9
DiCEのプロセスのCPUが常に高い使用率になってたので、DiCEを使わないでIPアドレスを自動更新させるようにしました。10分毎にIPアドレスをチェックして、IPアドレスに変更があった時のみDDNSサーバ(Dynamic DO!.jp)に対しIPアドレスの更新を行うようにします。

[root@server ~]# cd /usr ← /usr ディレクトリへ移動
[root@server usr]# mkdir -p ddns ← ddns ディレクトリの作成
[root@server usr]# cd ddns ← ddns ディレクトリへ移動

■ 自動更新スクリプトの作成  スクリプトはこちらのスクリプトを利用させて頂きました。

[root@server ddns]# vi ddo.jpIP_upgrade.pl
#!/usr/bin/perl
#
$CRT_IPF = '/usr/ddns/CRT_IP.dat';
$NEW_IPF = '/usr/ddns/NEW_IP.dat';
$LOG = '/var/log/ddns.log';
open INPUT,"$CRT_IPF";
$CRT_IP=<INPUT>;
close INPUT;
system("wget -q -O $NEW_IPF http://info.ddo.jp/remote_addr.php");
open(INPUT,$NEW_IPF);
$c = <INPUT>;
$stp = index($c,"REMOTE_ADDR:")+12;
$edp = length($c);
$NEW_IP = substr($c,$stp,($edp-$stp));
close(INPUT);
if ($NEW_IP ne "" and $CRT_IP ne $NEW_IP) {
open (OUTPUT ,">$CRT_IPF");
print OUTPUT $NEW_IP;
close OUTPUT;
print "IP Address update: $CRT_IP to $NEW_IP\n";
system("wget -q -O - 'http://ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード'");
$now_string = localtime;
open (OUTPUT ,">>$LOG");
print OUTPUT "$now_string DDNS IP Address Updated. $CRT_IP to $NEW_IP\n";
close OUTPUT;
}

■ スクリプトに実行権限を与える

[root@server ddns]# chmod +x ddo.jpIP_upgrade.pl

■ スクリプトの起動

[root@server ddns]# cd
[root@server ~]# /usr/ddns/ddo.jpIP_upgrade.pl
IP Address update:  to 121.113.208.81
<html><body>
<a href="http://ddo.jp/">Dynamic DO!.jp</a><br>
SUCCESS: yokensaka.com <= [ 121.113.208.81 ]<br>
IPアドレス更新完了<br>
2007/06/23 18:45:52<br>
<input type="button" value="閉じる" onclick="window.close();">
</body></html>

■ プログラムを08分~58分の10分おきに自動実行できるようにcronの設定ファイルに追加

[root@server ~]# crontab -e
08,18,28,38,48,58 * * * * /usr/ddns/ddo.jpIP_upgrade.pl
00 07 * * 0 rm -f /usr/ddns/CRT_IP.dat

ddo.jpは、IPアドレス更新リクエストが毎時00分前後の数秒に集中しており、サーバ負荷の増大に伴い、その間の更新リクエストが失敗する場合ありますので、自動更新処理は毎時00分を避け08分~58分の10分おきに設定しました。また、日曜日の午前7時にCRT_IP.datを強制削除するようにして、次のチェックタイミングに自動更新を行うようにしました。
※ 追記 (2008/02/17)
■ 停電などで再起動させたとき自動で実行するように設定

[root@server ~]# vi /etc/rc.local ← システム起動時実行コマンド定義ファイル編集
以下を最終行へ追加
chmod +x /usr/ddns/ddo.jpIP_upgrade.pl
/usr/ddns/ddo.jpIP_upgrade.pl