no-ip.comの自動更新

no-ip.comの無料サービス版で利用しているダイナミックDNSをシェルスクリプトで自動更新するためのメモ。

no-ip.comのダイナミックDNSは、無料サービスで利用している場合には1か月以上更新がないと自動的に登録が削除される。これを避けるためには、ツールで自動更新する必要があり、Windows用、Mac用、Linux用のものがno-ip.comのダウンロードページで配布されている。

自分はこれをFreeBSD上から更新したかったので、配布ツールに頼らずシェル作成することに。Linux用のものをコンパイルすれば使えるようでもあるけれども、シェルの方が簡単なので。wgetは入れていないのでfetch使用。

  1. /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
    
  2. ファイルのパーミッションを700に設定。
    chmod 700 /usr/local/bin/noip-update
  3. crontabを編集。
    crontab -e
  4. 次の内容をcrontabに追加して保存。午前3時に毎日実行。
    0 3 * * * /usr/local/bin/noip-update

更新に失敗した場合(/tmp/noip.htmlの中にあるステータスコードが “good IPaddress” または “nochg IPaddress” ではない場合)にはエラーコードの記載されたメールが届く。

作成にあたり、次のページを参照。

タイトルとURLをコピーしました