グローバル IP アドレスの取得
ADSL モデム Aterm WD605CV (ファームウェアバージョン 2.19)で確認.もしかしたら他の WARPSTAR 系のモデム,ルータでも可能かもしれない.ADSL モデムの IP アドレスは 192.168.0.1 とする.
Web 設定画面から取得
http://192.168.0.1/info_main.html に以下のようにグローバル IP アドレスが表示されていることを利用する.「WAN側 IPアドレス」の欄がグローバル IP アドレスである.なお,設定画面には認証が掛かっている.
(前略) <TR BGCOLOR=THISTLE> <TD><LABEL onMouseOver=msgShow(event,25) onMouseOut=msgHide()>PPPoEブリッジ接続状態</LABEL></TD> <TD>未接続 </TD> </TR> <TR BGCOLOR=THISTLE> <TD><LABEL onMouseOver=msgShow(event,11) onMouseOut=msgHide()>WAN側 IPアドレス</LABEL></TD> <TD>***.***.***.*** </TD> </TR> <TR BGCOLOR=THISTLE> <TD><LABEL onMouseOver=msgShow(event,14) onMouseOut=msgHide()>WAN側 プライマリDNS</LABEL></TD> <TD>***.***.***.*** </TD> </TR> (後略)
取得スクリプトは以下の通り.
wget -O - -o /dev/null --http-user=admin --http-passwd=PASSWORD http://192.168.0.1/info_main.html | grep -A 1 'msgShow(event,11)' | tail -n 1 | sed 's/[^0-9]*\([0-9.]*\)[^0-9]*/\1/'
WARPSTAR シリーズの ADSL モデムじゃなくても HTML にグローバル IP アドレスが表示されていれば使える汎用的な手段だけど,HTML の書式に依存していて,万が一,ファームウェアの更新などで HTML の書式が変わってしまうと使えなくなるかも.
また,ADSL モデムが落ちているとき(HTML にアクセスできない?)や,インターネット接続が切れているとき(グローバル IP アドレスが表示されない,または 0.0.0.0 などと表示される?)のことを考慮しなければならないかも.
telnet から取得
NEC WARPSTAR 7600H グローバルIPアドレス取得スクリプト (Perl)
ieServer.net にIPアドレスを通知するスクリプト - 近況報告を兼ねた独り言 (Ruby)
WARPSTAR の ADSL モデムは telnet でアクセスできるらしい.アクセスの様子は以下の通り.「IP ADDRESS」の欄がグローバル IP アドレスである.
telnet 192.168.0.1 Telnet Server 1.10 All rights reserved. login : admin Password: ### Welcome To WARPSTAR ### >show info wan 22 ENTRY NO ..... 22 IP ADDRESS ..... ***.***.***.*** SUBNET MASK ..... 0. 0. 0. 0 DNS SERVERS IP ADDRESS1 ..... ***.***.***.*** IP ADDRESS2 ..... ***.***.***.*** AC INFORMATION AC NAME ..... (empty) SERVICE NAME ..... (empty) >
ただ,この方法だと "login", "Password" のプロンプトが表示されるのを待ってから文字列を送信したり,telnet の表示結果を取得しなければならないため,telnet コマンドではなく,スクリプト言語の telnet ライブラリを使わなければならないかも.