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にログを飛ばすのを付けてたけどとりあえずこんな感じで足りる。