実行結果を変数に収納

無料ダイナミックDNS(DDNS)サービス - ieServer.Netで配布している、UNIXDDNS更新Perlスクリプトを無理やりWindowsで実行してみた。
結果は成功。例によって中途半端に説明します。

セッティング

スクリプトファイルをエディタで開くとこんな説明が見れる。

# 更新処理する。利用には perl wget cron が利用可能である必要あり。

Perlは、Active Perlをインストールすれば使えます。解説サイトがたくさんあるのでわかりやすい。
wgetは、UNIXならではの機能。しかし、http://weather.is.kochi-u.ac.jp/winwget.htmlなんていうものがあります。これをダウンロード、セッティングします。手順は後で。
cronは、スクリプトを定期実行するのに必要なだけで、ただ実行する分には不要。というわけで今回は無視。
Win用wgetを、パスの通るフォルダにダウンロード。必要なDLLも一緒に入れる。多分スクリプトと同じフォルダに突っ込むのが手っ取り早い。

スクリプトを書き換える

すこーーしだけ、変更します。
49行目の

$STATUS = `wget -q -O - '$DDNS_UPDATE?username=$ACCOUNT&domain=$DOMAIN&password=$PASSWORD&updatehost=1'`;

これの''を削除。

$STATUS = `wget -q -O - $DDNS_UPDATE?username=$ACCOUNT&domain=$DOMAIN&password=$PASSWORD&updatehost=1`;

こうなる。
どうしてこうするのかっていうと、Win版wgetの仕様なんじゃないかなあ?
あとは、普通にアカウント情報を入力すればOK。34行目の「ドメイン名」は、「or.tp」とかで、それより手前のサブドメインは含まないようなので注意。

実行

これ多分、カレントフォルダにファイルを生成するように出来てるから、スクリプトを保存したフォルダを作業フォルダに設定して実行しないと、あっちこっちにファイルが作られてしまうと思われる。
だから、スクリプトを保存したフォルダを作業フォルダにして、実行してやればいい。

今日覚えたPerlの話

``でくくった時、たとえば

$STATUS = `wget -q -O - $DDNS_UPDATE?username=$ACCOUNT&domain=$DOMAIN&password=$PASSWORD&updatehost=1`;

なんてやると、くくった内容を実行した結果を、$STATUSに収納してくれるらしい。
なるほどUNIXではとても便利そうですねえ。