DDNS用のシェルスクリプト2

すぐに動かせる仮想マシンdebianが設定してあったのでとりあえずこれを使う。最低限度の土台はできてるので外からアクセスするためのDDNSの設定を置く。といってもValueDomainシェルスクリプト - karronoliの日記で書いてるのでこれをコピペ、、と思ったらhostの形式にはバリエーションがあるっぽい。

debian% host example.org
example.org has address 208.77.188.166

debian% host example.org
example.org       A       208.77.188.166

なのでちょっと変更。

#!/bin/sh
VD="http://dyn.value-domain.com/cgi-bin/dyn.fcg"
new_ip=`wget -q -O -  "$VD?ip"`
#new_ip=`./upnp_gip`
if [ x$new_ip = x`host -t a www.example.com | cut -d"\`echo -e '\t'\`" -f3` ]
then
  echo DDNS no refresh
else
  wget -q -O - "$VD?d=example.com&p=password&h=www&i=$new_ip"
  echo DDNS refreshed
fi

コード中のupnp_gipはSOHOルータのExternal IPアドレスを取得(Net::UPnP::ControlPointを利用):Geekなぺーじを使って標準出力にグローバルIPを出してる。これ使うくらいなら他もperlで書いたほうが今回の問題は起きないから移植性はいいけど気にしない。サーバのフォーマットする前まではこれにメールの送信とsyslogにログを飛ばすのを付けてたけどとりあえずこんな感じで足りる。