「Ipcheck」の版間の差分
提供: Wikinote
(新しいページ: 'うちのネットワーク環境は、フレッツ光による PPPoE 接続+VALUE-DOMAIN によるドメインである。 たまに接続が切断されて IP アドレス...') |
|||
| 行1: | 行1: | ||
うちのネットワーク環境は、フレッツ光による PPPoE 接続+VALUE-DOMAIN によるドメインである。 | うちのネットワーク環境は、フレッツ光による PPPoE 接続+VALUE-DOMAIN によるドメインである。 | ||
たまに接続が切断されて IP アドレスが変わってしまうので、これを自動で更新できるようにする。 | たまに接続が切断されて IP アドレスが変わってしまうので、これを自動で更新できるようにする。 | ||
| + | VALUE-DOMAIN は HTTP アクセスによる IP アドレスの更新が可能なので、これを利用する。 | ||
| + | |||
| + | シェルスクリプトで実装し、cron で動かすことにする。 | ||
まずは、後々のために現在の IP アドレスを出力するコマンド ipaddr を作る。 | まずは、後々のために現在の IP アドレスを出力するコマンド ipaddr を作る。 | ||
| + | ifconfig ppp0 から IP アドレスを切り出すことにしよう。 | ||
| − | [hagio@lab | + | [hagio@lab ~]$ ifconfig ppp0 |
ppp0 Link encap:Point-to-Point Protocol | ppp0 Link encap:Point-to-Point Protocol | ||
inet addr:203.212.48.216★ P-t-P:202.224.37.130 Mask:255.255.255.255 | inet addr:203.212.48.216★ P-t-P:202.224.37.130 Mask:255.255.255.255 | ||
| 行15: | 行19: | ||
これ(★)を切り出せばよい。 | これ(★)を切り出せばよい。 | ||
| − | [hagio@lab | + | [hagio@lab ~]$ cat ipaddr |
#!/bin/bash | #!/bin/bash | ||
/sbin/ifconfig ppp0 | grep -o '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' | head -n 1 | /sbin/ifconfig ppp0 | grep -o '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' | head -n 1 | ||
| − | [hagio@lab | + | [hagio@lab ~]$ ./ipaddr |
203.212.48.216 | 203.212.48.216 | ||
| + | |||
| + | 次に、IP アドレスを更新するコマンド update-domain を作る。 | ||
| + | 先ほど作成した ipaddr コマンドの出力を利用する。 | ||
| + | |||
| + | [hagio@lab ~]$ cat update-domain | ||
| + | #!/bin/bash | ||
| + | IPADDR=$(ipaddr コマンドへのパス) | ||
| + | echo "IP address: " $IPADDR | ||
| + | /usr/bin/curl "http://dynamic.name-services.com/interface.asp?Command=SetDNSHost&HostName=ホスト名&Zone=ドメイン名&DomainPassword=パスワード&Address=$IPADDR" | ||
| + | |||
| + | 実行してみる。curl の出力は /dev/null に捨てるべきか? | ||
| + | |||
| + | [hagio@lab ~]$ update-domain | ||
| + | New IP address: 203.212.48.216 | ||
| + | ;URL Interface<br> | ||
| + | ;Machine is Reseller7-SJL<br> | ||
| + | IP=203.212.48.216 | ||
| + | Command=SETDNSHOST | ||
| + | Language=eng | ||
| + | ErrCount=0 | ||
| + | ResponseCount=0 | ||
| + | MinPeriod=1 | ||
| + | MaxPeriod=10 | ||
| + | Server=Reseller7-SJL | ||
| + | Site=eNom | ||
| + | IsLockable=True | ||
| + | IsRealTimeTLD=True | ||
| + | TimeDifference=+07.00 | ||
| + | ExecTime=0.047 | ||
| + | Done=true | ||
2009年4月16日 (木) 07:37時点における版
うちのネットワーク環境は、フレッツ光による PPPoE 接続+VALUE-DOMAIN によるドメインである。 たまに接続が切断されて IP アドレスが変わってしまうので、これを自動で更新できるようにする。 VALUE-DOMAIN は HTTP アクセスによる IP アドレスの更新が可能なので、これを利用する。
シェルスクリプトで実装し、cron で動かすことにする。
まずは、後々のために現在の IP アドレスを出力するコマンド ipaddr を作る。 ifconfig ppp0 から IP アドレスを切り出すことにしよう。
[hagio@lab ~]$ ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:203.212.48.216★ P-t-P:202.224.37.130 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1454 Metric:1
RX packets:419348 errors:0 dropped:0 overruns:0 frame:0
TX packets:226329 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:533010019 (508.3 MiB) TX bytes:25575899 (24.3 MiB)
これ(★)を切り出せばよい。
[hagio@lab ~]$ cat ipaddr #!/bin/bash /sbin/ifconfig ppp0 | grep -o '\(digit:\{1,3\}\.\)\{3\}digit:\{1,3\}' | head -n 1 [hagio@lab ~]$ ./ipaddr 203.212.48.216
次に、IP アドレスを更新するコマンド update-domain を作る。 先ほど作成した ipaddr コマンドの出力を利用する。
[hagio@lab ~]$ cat update-domain
#!/bin/bash IPADDR=$(ipaddr コマンドへのパス) echo "IP address: " $IPADDR /usr/bin/curl "http://dynamic.name-services.com/interface.asp?Command=SetDNSHost&HostName=ホスト名&Zone=ドメイン名&DomainPassword=パスワード&Address=$IPADDR"
実行してみる。curl の出力は /dev/null に捨てるべきか?
[hagio@lab ~]$ update-domain New IP address: 203.212.48.216 ;URL Interface
;Machine is Reseller7-SJL
IP=203.212.48.216 Command=SETDNSHOST Language=eng ErrCount=0 ResponseCount=0 MinPeriod=1 MaxPeriod=10 Server=Reseller7-SJL Site=eNom IsLockable=True IsRealTimeTLD=True TimeDifference=+07.00 ExecTime=0.047 Done=true