グローバル 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 ライブラリを使わなければならないかも.