私的mydns.jpの更新スクリプトを考えた話

自宅サーバー運用に欠かせないDDNSです。

いろいろあるのですが、独自ドメインを自宅サーバーで使うには
私的mydns.jp しか選択がないようなきがする。

DDNSサービスが提供しているサブドメインを使うのなら他にも選択はあるのですが、
少なくともFreeNomのドメインは無理でした。

DDNSサービスに対する勘違い

DDNSだと、IPアドレスが変わってしまったときにIPアドレスを通知する必要があります。
ここで勘違いしていたことがあって、
この通知は負荷になるのであまりしてはいけないものだと思っていました。
そうしていたら、1週間後にメールが来ました。

「通知が一定期間無いと、削除するよ!」

って言う内容でした。
ちょっと解せず、「通知していないのはIPに変更がないからです」とメールをすると、

「定期的に通知をしていただく制度になっています。3分に1回でも良いですよ!」

と言われてしまいました。負荷を制限とか考えなくてもいいみたいでした。

せっかくなので、更新スクリプトです

そんなやり取りをする前に作ってしまった私的mydns.jp用の更新スクリプトです ^^;

#!/bin/sh
#Id password
ID=mydns*****
PASSWORD=********
#変数定義
HTTP="http://"
IPV6=${HTTP}${ID}:${PASSWORD}@ipv6.mydns.jp/login.html
IPV4=${HTTP}${ID}:${PASSWORD}@ipv4.mydns.jp/login.html
IP_FILE=CURRENT_IP.txt
CURRENT_IP="0.0.0.0"
NEW_IP="0.0.0.0"
UPDATE_LOG=UPDATE.log

#前回のIP
if [ -f $IP_FILE ] ; then
    CURRENT_IP=`cat $IP_FILE`
fi

#今回のIP
# curl ifconfig.co
# curl inet-ip.inf
NEW_IP=`curl ifconfig.co`


if [ $CURRENT_IP = $NEW_IP ] ; then
    :
else
    wget -q -O `date +%Y%m%d_%H%M%S`_ipv6.txt $IPV6
    if [ $? = 0 ] ; then
        sleep 3;
        wget -q -O `date +%Y%m%d_%H%M%S`_ipv4.txt $IPV4
        if [ $? = 0 ] ; then
            #更新
            echo $NEW_IP > $IP_FILE
            echo [`date +%Y%m%d_%H%M%S`] update $CURRENT_IP to $NEW_IP >> $UPDATE_LOG
        fi
    fi
fi