2009/02/09(Mon)お手製ValueDomain更新ツール

2009/02/09 20:34 NetService::ValueDomain
WindowsでDNS Updateを行うといったら、DiCEが有名なツールなのだが、友人宅のPCではどうもうまく更新されないらしい。
更新ステータスは正常と帰ってくるものの、実際は更新されていないようになってたり、反映されるIPがちょっと過去のものだったり……と。

DiCEが原因だとは思いにくいが、とりあえず生のStatus値を見て更新状況をチェックしたいのと、自分はLinuxのCronで更新しててwgetの方が扱いやすいので、そちらに切り替えてみる。

といっても、Windowsはコマンドシェルがショボくて困る。
cronのような柔軟なシステムをタスクスケジューラで作るのは難しく*1、Sleepすらシェルでは使えない*2のか…。
  1. valuedomain.bat
    メインの更新を行う部分とスリープを交互に繰り返す部分
    REM ↓は設置ディレクトリに適宜変更
    cd /d "C:\Program Files\wget\bin"
    :loop
    REM ↓太字の部分を適宜変更
    wget.exe -q -O - "http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=[bf:設定ドメイン]&p=[bf:あなたのパスワード]&h=[bf:設定ホスト]"
    
    cscript //NoLogo sleep.vbs
    goto loop
    
  2. sleep.vbs
    ただSleepするだけ。
    単位はmsなので、10[min] = 600[s] = 600000[ms]と設定
    WScript.Sleep 600000
    
  3. start.vbs
    バッチファイルをタスクバーに出さずに起動するためにShell.Runを使用。
    第2引数の0を指定するのがミソ。
    CreateObject("WScript.Shell").Run "C:\Progra~1\wget\bin\valued~1.bat",0
    

で、start.vbsをスタートアップに放り込んでおけば、タスクバーに何も出ずに裏で10分毎にIPを更新しにいくはずです。
dyn.value-domain.comは5台に分散しているようですし、まあ5分、10分おきならば問題ないでしょう。

*1 : 出来ないわけでなくスケジュールの設定が面倒

*2 : というわけでWindows Script Hostにお世話になってます。