Route 53でcli53を使ったDynamic DNS

Route 53でDDNSというとroute53DynDNS.bashを使った例を多く見かけるのだが、自分の手元では正常動作しないし読めた物ではない感じの作りなので、cli53を使って極めて簡単に書き直した。

AWSインスタンスでの例はこちらにあるのだが、ここではAWSではない自宅鯖のDDNSに用いるのでEC2関係の所は参考にしない。

cli53をインストー
sudo pip install cli53
.botoにIDとKeyを設定

こんな感じの奴を作る

[Credentials]
aws_access_key_id = <your_access_key_here>
aws_secret_access_key = <your_secret_key_here>
update53.shを作成
#!/bin/sh

ZONE=example.com
RECORD=www
DAT=/tmp/update53.dat

if [ -f $DAT ]; then
	PREV=`cat $DAT`
else
	PREV=`cli53 rrlist $ZONE|grep ^$RECORD|awk '{print $5}'`
fi
CUR=`wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`
echo $CUR > $DAT

if [ "$PREV" == "$CUR" ]; then
	exit 0
fi

cli53 rrcreate $ZONE $RECORD A $CUR --ttl 3600 --replace

crontabに適当にインストー

*/5 * * * * /home/syuu/update53.sh