[VALUE-DOMAIN]DiCE以外でDDNSのアップデート

春という事で鯖のドメイン引越しなぞやってみたり(^◇^;
DiCE以外も使えるようになってもいいんじゃないかとちょいとお勉強。
ダイナミックDNS(DDNS)Value-Domain 自動登録スクリプト
http://miyazaki.ddo.jp/linuxserver/ddns_valuedomain.html


上記を参考に(^◇^;
グローバルIPアドレスの取得から。VALUE-DOMAINでは更新用cgiとグローバルIP取得xgiが用意されているので、それで取得すればいいのですが・・f(^^;)
参考ページにあるルーターと同じメーカーなので試してみました!(ぉ
■ルーターへtelnet
# telnet 192.168.***.***
Trying 192.168.***.***…
Connected to 192.168.***.***.
Escape character is ‘^]’.
Telnet Server 1.10 All rights reserved.
login : admin
Password:
### Welcome To WARPSTAR ###
>show info wan 22
ENTRY NO ….. 22
IP ADDRESS ….. 203.***. ***.208
SUBNET MASK ….. 0. 0. 0. 0
DNS SERVERS
IP ADDRESS1 ….. 202.***. ***.247
IP ADDRESS2 ….. 210.***. ***.193
AC INFORMATION
AC NAME ….. *******
SERVICE NAME ….. (empty)
>
お、動くじゃんヽ(*^。^*)ノ
AC NAMEに恐ろしい文字も見えるが・・・見なかったことにしておこうw
■IP取得スクリプト(/path/to/warpstar.pl)
#!/usr/bin/perl
use Net::Telnet();
$lines =””;
$wp_host = ‘192.168.***.***’; #<-- ルータのIPアドレス $wp_user = 'admin';   #<-- ルータ管理者アカウント名(固定) $wp_pass = '****';   #<-- ここには自分のパスワードを入れてね $t=new Net::Telnet(Timeout => 10);
$t->open($wp_host);
$t->waitfor(‘/login :.*$/’);
$t->print(“$wp_user”);
$t->waitfor(‘/Password:.*$/’);
$t->print(“$wp_pass”);
$t->waitfor(‘/>.*/’);
$result = “ERR\n”;
$t->print(“show info wan 22”);
($lines)=$t->waitfor(‘/>.*/’);
foreach $_ (split(/\n/, $lines)) {
if(/^( +)(IP ADDRESS +)(\.+ )( *)([0-9]*\.)( *)([0-9]*\.)( *)([0-9]*\.)( *)([0-9]*)/) {
$result = “$5$7$9$11\n”;
}
}
if($result == “0.0.0.0”) {
$result = “ERR\n”;
}
print $result;
$t->close;
exit
で、テスト。エラーでとる(:_;)
■perlのtelnetが無いようなので入れる(CPANをスルーする私^^;)
# yum -y install perl-Net-Telnet
読み込んだプラグイン:downloadonly, fastestmirror
Loading mirror speeds from cached hostfile
* fedora: ftp.heanet.ie
* updates: ftp.heanet.ie
インストール処理の設定をしています
依存性の解決をしています
–> トランザクションの確認を実行しています
—> パッケージ perl-Net-Telnet.noarch 0:3.03-7.fc10 を更新に設定しました
–> 依存性解決を終了しました
依存性を解決しました
===================================================================================
Package Arch Version Repository Size
===================================================================================
インストールしています:
perl-Net-Telnet noarch 3.03-7.fc10 fedora 56 k
Transaction Summary
===================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
総ダウンロード容量: 56 k
パッケージをダウンロードしています:
perl-Net-Telnet-3.03-7.fc1 14% [== ] 0.0 B/s | 8.0 kB –:– ETA
perl-Net-Telnet-3.03-7.fc1 57% [=========- ] 27 kB/s | 32 kB 00:00 ETA
perl-Net-Telnet-3.03-7.fc10.noarch.rpm | 56 kB 00:01
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを終了しました
トランザクションのテストを成功しました
トランザクションを実行しています
インストールし : perl-Net-Telnet-3.03-7.fc10.noarch 1/1
インストールしました:
perl-Net-Telnet.noarch 0:3.03-7.fc10
完了しました!
再テスト。無事IP取得ができたようですヽ(*^。^*)ノ
■Value-Domain 用DNS更新スクリプト(lynx用)
#!/bin/bash
SUBDM=”dyn”
TO=”-connect_timeout=180″
# 自グローバルIPアドレスを取得する。
# この場合は自分のルーター(NEC WR7****) から…
REMOTEIP=`/path/to/warpstar.pl`
#echo “remoteip = $REMOTEIP”
#
# CGI Script
CGI=value-domain.com/cgi-bin/dyn.fcg
#
# domain / password
DOMAIN=”****” # <-- 自分のドメイン名 PASS="****" # <-- DNS更新パスワード MESSAGE="****" # <-- あなたのお気に入りの言葉 IPFILE="/tmp/${DOMAIN}.ipaddress" if [ ! -f "$IPFILE" ]; then echo "$MESSAGE" > “$IPFILE”
fi
if [ $REMOTEIP == “ERR” ]; then
echo “$MESSAGE” > “$IPFILE”
KEKKA=”could not retrieve global IP address”
/usr/bin/logger -p daemon.info -t $DOMAIN $KEKKA
exit 0
fi
if [ x”$REMOTEIP” != x`cat “$IPFILE”` ]; then
HOST=”@”
URL=”http://${SUBDM}.${CGI}?d=${DOMAIN}&p=${PASS}&h=${HOST}&i=${REMOTEIP}”
RESULT1=`/usr/bin/lynx ${TO} -dump $URL | head -10 | grep ‘status’ | awk ‘{print $1}’`
/usr/bin/logger -p daemon.info -t ${HOST}.${DOMAIN} ipaddress=$REMOTEIP server=$SUBDM $RESULT1
HOST=”www”
URL=”http://${SUBDM}.${CGI}?d=${DOMAIN}&p=${PASS}&h=${HOST}&i=${REMOTEIP}”
RESULT2=`/usr/bin/lynx ${TO} -dump $URL | head -10 | grep ‘status’ | awk ‘{print $1}’`
/usr/bin/logger -p daemon.info -t ${HOST}.${DOMAIN} ipaddress=$REMOTEIP server=$SUBDM $RESULT2
if [ $RESULT1 == “status=0” ]; then
if [ $RESULT2 == “status=0” ]; then
echo “$REMOTEIP” > “$IPFILE”
fi
fi
fi
exit 0

■Lynxをインストール
# yum -y install lynx
読み込んだプラグイン:downloadonly, fastestmirror
Loading mirror speeds from cached hostfile
* fedora: ftp.heanet.ie
* updates: ftp.heanet.ie
インストール処理の設定をしています
依存性の解決をしています
–> トランザクションの確認を実行しています
—> パッケージ lynx.i386 0:2.8.6-18.fc10 を更新に設定しました
–> 依存性解決を終了しました
依存性を解決しました
===================================================================================
Package Arch Version Repository Size
===================================================================================
インストールしています:
lynx i386 2.8.6-18.fc10 updates 1.8 M
Transaction Summary
===================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
総ダウンロード容量: 1.8 M
パッケージをダウンロードしています:
lynx-2.8.6-18.fc10.i386.rp 0% [ ] 0.0 B/s | 8.0 kB –:– ETA
lynx-2.8.6-18.fc10.i386.rp 1% [ ] 28 kB/s | 32 kB 01:05 ETA
lynx-2.8.6-18.fc10.i386.rp 4% [- ] 34 kB/s | 80 kB 00:51 ETA
lynx-2.8.6-18.fc10.i386.rp 9% [=- ] 50 kB/s | 168 kB 00:33 ETA
lynx-2.8.6-18.fc10.i386.rp 16% [==- ] 75 kB/s | 312 kB 00:20 ETA
lynx-2.8.6-18.fc10.i386.rp 25% [==== ] 98 kB/s | 464 kB 00:13 ETA
lynx-2.8.6-18.fc10.i386.rp 43% [======= ] 161 kB/s | 808 kB 00:06 ETA
lynx-2.8.6-18.fc10.i386.rp 66% [=========== ] 233 kB/s | 1.2 MB 00:02 ETA
lynx-2.8.6-18.fc10.i386.rp 96% [================ ] 331 kB/s | 1.7 MB 00:00 ETA
lynx-2.8.6-18.fc10.i386.rpm | 1.8 MB 00:03
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを終了しました
トランザクションのテストを成功しました
トランザクションを実行しています
インストールし : lynx-2.8.6-18.fc10.i386 1/1
インストールしました:
lynx.i386 0:2.8.6-18.fc10
完了しました!
で、ドメインの更新を確認すると。エラー9・・(^◇^;
参考:ステータス0が正常更新。9がアンノウン。
VALUE-DOMAINでDDNSの更新許可設定してないと出ます。
■ダイナミックDNS設定情報更新
・ダイナミックDNS機能(チェックを入れて有効にする→更新ボタン)
・ドメインパスワード(ついでにドメインロックもしてみる)
[http://dyn.value-domain.com/cgi-bin/dyn.fcgから更新できるように設定]
再度スクリプトのDNS更新テスト~。やっと成功ヽ(*^。^*)ノ
■/etc/crontab変更で自動更新にゃ(=^・^=)
# for yourdomain.com Value-Domain update
*/10 * * * * /root/update_dns.sh(ファイル名は好きなように)
59 23 * * * rm -f /tmp/(ドメイン名).ipaddress

久しぶりにすんなり(?)作業終了ヽ(*^。^*)ノ