更新の手順
自身のグローバル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