no-ip.comの無料サービス版で利用しているダイナミックDNSをシェルスクリプトで自動更新するためのメモ。
no-ip.comのダイナミックDNSは、無料サービスで利用している場合には1か月以上更新がないと自動的に登録が削除される。これを避けるためには、ツールで自動更新する必要があり、Windows用、Mac用、Linux用のものがno-ip.comのダウンロードページで配布されている。
自分はこれをFreeBSD上から更新したかったので、配布ツールに頼らずシェル作成することに。Linux用のものをコンパイルすれば使えるようでもあるけれども、シェルの方が簡単なので。wgetは入れていないのでfetch使用。
- /usr/local/bin/noip-updateをテキストエディタで開いて、次の内容で作成。
#!/bin/sh USER=username PASS=password HOST=domain.name.com IP=111.222.333.444 fetch -q -o /tmp/noip.html \ "http://$USER:$PASS@dynupdate.no-ip.com/nic/update?hostname=$HOST&myip=$IP" STAT=`cat /tmp/noip.html | cut -d' ' -f 1` if [ "$STAT" != "good" ] && [ "$STAT" != "nochg" ]; then cat /tmp/noip.html cat "" cat "see http://www.no-ip.com/integrate/response/" fi
- ファイルのパーミッションを700に設定。
chmod 700 /usr/local/bin/noip-update
- crontabを編集。
crontab -e
- 次の内容をcrontabに追加して保存。午前3時に毎日実行。
0 3 * * * /usr/local/bin/noip-update
更新に失敗した場合(/tmp/noip.htmlの中にあるステータスコードが “good IPaddress” または “nochg IPaddress” ではない場合)にはエラーコードの記載されたメールが届く。
作成にあたり、次のページを参照。