#!/usr/bin/perl -w # -w ワーニングを出す(2008/06/21) use strict; # 宣言した変数以外を使えなくする my $niftyid="NIFTYID"; my $niftypass="NIFTYPASSWORD"; my $file="/usr/local/bin/ddns4nifty/ipaddr.txt"; my $update="/usr/local/bin/ddns4nifty/update.log"; my $no_update="/usr/local/bin/ddns4nifty/no_update.log"; my $wget; my $ipaddr; my $valid; my $oldipaddr; my $sec; my $min; my $hour; my $mday; my $mon; my $year; my $wday; my $yday; my $isdst; my $tt; my $null=""; $| = 1; # ゼロ以外が代入されると出力をバッファリングしなくなる。 # ######################## 新しいIPアドレスをチェックする $wget = `wget --no-check-certificate -O- -q https://www.atnifty.com/ddns/p13.php`; # IPアドレスを得る #print "debug wget p13.php\n"; # 確認用の文を出力 $wget =~/[0-9]+(\.[0-9]+){3}/; # IPアドレスとのマッチパターン $ipaddr = $&; # マッチしたIPアドレスを入力 #print "Debug get ip address=$ipaddr\n"; # 確認用の文を出力 $wget =~/name="valid" value="[a-zA-Z0-9]+"/; # validの部分を探す(マッチ) $valid = $&; # マッチした部分を入力 $valid =~s/name="valid" value="//; # 値の前の部分を除去 $valid =~s/"//; # 値の後ろの部分(")を除去 #print "Debug finish valid=$valid\n"; # 確認用の文を出力 # ########################### 古いIPアドレスをファイルから読み込む open FH, "<",$file || die "Error: ipaddr.txt $!\n" ;# IPアドレス読み込み用ファイルを開く $oldipaddr = <FH> # 記録されているIPアドレスを入力 close FH; #print "Debug get old ip address\n"; # 確認用の文を出力 # ########################### IPアドレスがうまく得られたかチェック # get ipaddress error check (2008/06/21 追加 ) # if ($ipaddr eq $null) { $ipaddr = $oldipaddr ; #ヌルの場合は古いIPアドレスを与える print "Debug get ip address error null "; print "Debug ipaddress = oldipaddress" } # ########################### IPアドレスが変わらない場合 if($ipaddr eq $oldipaddr){ open (OUT,">> $no_update"); # 追加書き込み用ファイルを開く $tt=time(); ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($tt); $year=$year+1900; $mon=$mon+1; print OUT $year,"/",$mon,"/",$mday," ",$hour,":",$min,":",$sec," " ; print OUT "ip address is not changed:$ipaddr\n" ; #IPアドレスに変更無し close(OUT); # print "Debug not change ip address\n"; # 確認用の文を出力 } # ########################## IPアドレスの変更があった場合 else{ open (OUT,">> $update"); # 追加書き込み用ファイルを開く $tt=time(); ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($tt); $year=$year+1900; $mon=$mon+1; print OUT $year,"/",$mon,"/",$mday," ",$hour,":",$min,":",$sec," " ; print OUT "ip addres is changed:$ipaddr\n" ; close(OUT); open FH,">",$file|| die "Error: ipaddr.txt $!\n" ;# IPアドレス書き込み用ファイルを開く print FH "$ipaddr" ; close FH; $wget=`wget --no-check-certificate -O- -q --http-user=$niftyid --http-passwd=$niftypass --post-data="ipaddress=$ipaddr&nifty_id=&update=newip&valid=$valid" https://gateway.nifty.com/service/g-way/ddns/nifty/secure/config/update.php`; # コメントを表示しないに戻した。 # print "finish change ip address\n"; # 確認用の文を出力 }