「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 hagi_utils]$ ifconfig ppp0 | addspace
+
  [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 hagi_utils]$ cat ipaddr  
+
  [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 hagi_utils]$ ipaddr
+
  [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