VALUE DOMAIN の ダイナミックDNS 更新スクリプト

2010/05/07 金曜日 12:47 投稿者 zon

VALUE DOMAIN でダイナミックDNSを利用するための更新スクリプト。

DiCE DynamicDNS Client (自宅でインターネットサーバー) などのDNS更新ツールを使えばいい話だけど、Linux にインストールする方法や使い方を覚えるよりも、シェルスクリプト + Cron で自作したほうが早そうだったので自作した。

以前、Xrea SSHホスト登録に シェルスクリプト + Cron で自作したのでそのとき参考にしたものを元に改造することにする。

SSHホスト登録用のスクリプトは下記を参考にした。
xrea(coreserver) SSHホスト登録スクリプト – Kerosoft : Modus Operandi

事前準備

ダイナミックDNS機能を使えるように設定しておく。下記を参照
ダイナミックDNS機能のご利用方法
※スクリプトでドメインパスワードを使用するので、管理画面のドメインロックの変更からドメインパスワードを設定しておく。

スクリプトで使用する API の意味を確認しておく。下記のページに使用するものは全てかかれてある。
ダイナミックDNS設定方法と注意事項

ダイナミックDNS 更新スクリプト

処理の手順としては、VALUE DOMAIN で用意されている IPアドレス検出CGI を利用して、自分の IP アドレスを確認し、前回確認した時の IP アドレスと変わっている場合は、VALUE DOMAIN が用意しているダイナミックDNS を更新するアクセス先へ通知する。

ついでに、直近のIPアドレスをチェックした時刻とダイナミックDNS の更新通知を行った場合のログを残す。

課題としては、VALUE DOMAIN で用意されている IPアドレス検出CGI を利用しないで、グローバルIPアドレスを取得できるようにしたい。(※ルータから取得する?)

# IP チェック処理
CHKLOGFILE="ip_chk.log"
MYIPFILE="global_ip.log"

date > $CHKLOGFILE

MYIP=`wget -q -O - http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip`
OLDMYIP=`cut -f 1 $MYIPFILE`

if test $MYIP = $OLDMYIP ; then
	echo "Not Change IP" >> $CHKLOGFILE
	exit
fi

echo "Change IP" >> $CHKLOGFILE

# DDNS 登録処理
REGLOGFILE="ddns_reg.log"
echo "****************************************" >> $REGLOGFILE
echo "DDNS Registration" >> $REGLOGFILE
date >> $REGLOGFILE
echo "$OLDMYIP → $MYIP" >> $REGLOGFILE

MYDOMAIN="ドメイン名"
MYPW="パスワード"
MYHOST="ホスト名"
DYNURL="http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=$MYDOMAIN&p=$MYPW&h=$MYHOST&i=$MYIP"

RET=`wget -q -O - $DYNURL`
echo "$RET" >> $REGLOGFILE

if [ `echo "$RET" | egrep "status=0"` ] ; then
	echo $MYIP > $MYIPFILE
	echo "Registration Successful."
else
	echo "Registation Failed."
fi

exit

※ドメイン名、パスワード、ホスト名は各自で設定すること。

Cron の設定

/etc/crontab を編集して、定期的にシェルスクリプトを実行するようにする。

Cron の設定方法は分かり易い解説が色々あるのでそちらにを参照。
cron の設定ガイド

参考

その他、参照したもの。

七転び八起き  グローバルIPアドレスを自動で通知したい(2)
if 文と test コマンド – UNIX & Linux コマンド・シェルスクリプト リファレンス
Linuxコマンド一覧 [cut]
VALUE DOMAIN で DNS設定
Bash基礎文法最速マスター – 何かしらの言語による記述を解析する日記

トラックバック一覧

この記事にはトラックバックがついていません。

コメント一覧

この記事にはコメントがついていません。

RSS feed for comments on this post.

コメント投稿

Sorry, the comment form is closed at this time.