MyDNS.jp の自動更新

更新の手順
自身のグローバルIPアドレスを確認
IPが変化した時だけ MyDNS と IP比較用ファイル を更新
( MyDNS へ過度なアクセスをしない )
※ 更新スクリプトは任意の場所(今回は /home/「user」/ipsend)

● Linux でグローバルIPアドレスを確認する方法
$ curl ifconfig.me
$ curl ifconfig.io
$ curl inet-ip.info
今回は、inet-ip.info を使用

● IP比較用ファイルの初期作成
$ mkdir /home/「user」/ipsend
$ curl -s inet-ip.info > /home/「user」/ipsend/old_ip.txt
$ chmod 666 /home/「user」/ipsend/old_ip.txt

● MyDNS 更新スクリプト

#!/bin/bash

newip=$(curl -s inet-ip.info)
oldip=$(sudo cat /home/「user」/ipsend/old_ip.txt)

if [ "$oldip" != "$newip" ]; then
wget -O - --http-user=「mydns-user」 --http-password=「mydns-passwd」http://ipv4.mydns.jp/login.html
echo $newip > /home/「user」/ipsend/old_ip.txt
fi

exit 0

$ chmod 755 /home/「user」/ipsend/ipsend.sh

● 更新の確認
IPが変化した時だけ MyDNS を更新してるかを確認する為に LOG に書き出す。
# touch /var/log/mydns.log
# chmod 666 /var/log/mydns.log

# MyDNS IP
*/10 * * * * sh /home/「user」/ipsend/ipsend.sh > /var/log/mydns.log 2>&1

# /etc/init.d/cron restart

※ IPが変化し、更新した時だけ下記の用な LOG が書き込まれる。
—————————
ipv4.mydns.jp に接続
 …
`STDOUT’ に保存中
<html>
 …
</html>
 …
stdout へ出力しました
—————————
更新しなかった時は、空ファイルを上書きする。

● 自動更新
試験結果が良ければ LOG 書き出しを停止
( SDカード延命の為、余計な書き込みをしない )

# MyDNS IP
#*/10 * * * * sh /home/「user」/ipsend/ipsend.sh > /var/log/mydns.log 2>&1
*/10 * * * * sh /home/「user」/ipsend/ipsend.sh &>/dev/null

# /etc/init.d/cron restart