DDNS更新スクリプト
自ホストのIPアドレスをDDNSに登録するスクリプトを書いた。
perlにbashスクリプトの返値が入らず困った。
自ホストのIPアドレスは以下を
http://www.tymy.net/~matsu/blog/2008/04/08/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7ip%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E6%B1%82%E3%82%81%E3%82%8B%E6%96%B9%E6%B3%95/
参考にして、freeBSD用に書き換え。
/sbin/ifconfig | grep 'inet ' | grep -v 127.0.0.1 | gawk '{print $2;}'
上記スクリプトをperlのsystem関数に渡すが、帰ってくる値は0。
getLoaclIP.shは上記シェルスクリプトが書いてあるスクリプトファイル。
system "/bin/sh ./getLocalIP.sh > current_ip_tmp";
しょうがないので一旦ファイルに書き込み、読み出し。
open(FH,"<current_ip_tmp"); $NEW_IP = <FH>;
$NEW_IPをprintすると、何故か$NEW_IPの最後に改行が入っているらしい。cat -ev current_ip_tmpしても入ってないのになあ。perlの仕様か?
IPアドレスが更新されたか見たら、設定されていないとか言われる仕様。
// でも振られるIPが固定なので別にいっかあ(謎