雑記とPR-S300NEのグローバルIPの取得

2013年8月9日

週の大半を気圧と気候に翻弄されて寝込んで過ごしている昨今、なんというか苦しむために生きているような感じで大分精神的に辛かったりします。
まぁ、本当にこれはまずいと思ったら病院に直行ですが、
現状、人として地雷で周りを鬱々とさせそうなのでしばらく一人で黙って苦しんでおく方向で・・・。
以上泣き言。

以下本題。

固定IP運営をする必要がなくなり、ASAHIネットの固定IPサービスを切ってddns環境へ移行しました。

我が家はフレッツ光Nextで、テレビの視聴を合わせて終端にPR-S300NEのルーターが設置されていますが、シェルスクリプトから利用できる安易なIP取得方法がありません。

外部サイトから取得するというのも、分単位で確認するとなるとはばかられます。

そこでPR-S300NEにログインしてステータス表示を取得してhtmlを分解、WAN側IPのみを取得するという方法をとります。
dnsはValue Domainを使用しているのでコマンド発行の部分は各自書き換えるとして、スクリプトは以下の様になります。

#!/bin/sh

oldipdat=`cat /var/log/ipcheckdat.log`
#               router login user    password           router ip
ipdat=`wget -O - --http-user=user --http-passwd=user \
  http://10.12.59.1/index.cgi/info_mainrm | nkf | \
sed -n -e "/WAN側IPアドレス/,/<\/td>/p" | \
sed -n -e "s/.*colspan='2'>\(.*\)<.*$/\1/p"`

echo "$ipdat" > /var/log/ipcheckdat.log

if [ "$ipdat" != "$oldipdat" ]; then
  lynx -connect_timeout=180 -dump \
 "http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=hoge.com&p=password&h=ddns"
fi

exit 0

 PR-S300NEには接続設定が4つあり、上記のスクリプトは4つ全てのIPをファイルに書きだします。複数の接続先を管理している人は分解して処理しましょう。

cronで毎分呼び出されるようにしておけば、IP変更を即時に反映できます。
レコードの反映は結局数時間から数十時間要しますが、ddnsという事で割り切りましょう。