#!/usr/bin/perl -w # -w ワーニングを出す # /usr/local/bin/ddns4nifty/ddns4nifty-081211.pl # nifty ddns 2008/12/3 のリニューアルに対応 use strict; # 宣言した変数以外を使えなくする my $niftyid="NIFTYID"; my $niftypass="NIFTYPASSOWRD"; 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 $ip_change_log="/usr/local/bin/ddns4nifty/ip_change_log.txt"; 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; # ゼロ以外が代入されると出力をバッファリングしなくなる。 # ######################## # 2008/12/03 までのもの $wget = `wget --no-check-certificate -O- -q https://www.atnifty.com/ddns/p13.php`; $wget = `wget --no-check-certificate -O- -q http://domain.nifty.com/domain/DdnsIpChangeConfirm.do?DDNS_CHANGE_IP=IP%95%CF%8DX%83y%81%5B%83W%82%D6` ; # 2008/12/3 niftyのddnsリニューアルに伴い変更 #print "debug wget p13.php\n"; # 確認用の文を出力 $wget =~/[0-9]+(\.[0-9]+){3}/; # IPアドレスとのマッチパターン $ipaddr = $&; # マッチしたIPアドレスを入力 #print "Debug get ip address=$ipaddr\n"; # 確認用の文を出力 # ------------ ここ以下は2008/12/3以前の部分 ------------- #$wget =~/name="valid" value="[a-zA-Z0-9]+"/; # validの部分を探す(マッチ) #$valid = $&; # マッチした部分を入力 #$valid =~s/name="valid" value="//; # 値の前の部分を除去 #$valid =~s/"//; # 値の後ろの部分(")を除去 #print "Debug finish valid=$valid\n"; # 確認用の文を出力 # ------------ ここ以上は2008/12/3以前の部分 ------------- # ########################### open FH, "<",$file || die "Error: ipaddr.txt $!\n" ; #ファイルを入力で開く $oldipaddr = <FH> # 記録されているIPアドレスを入力 close FH; #print "Debug get old ip address\n"; # 確認用の文を出力 # ########################### # get ipaddress error check (2008/06/21 追加 ) # if ($ipaddr eq $null) { $ipaddr = $oldipaddr ; print "Debug get ip address error null "; print "Debug ipaddress = oldipaddress" } # ########################### 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"; # 確認用の文を出力 } # ########################## 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" ; print FH "$ipaddr" ; close FH; # $wget=`wget --secure-protocol=auto -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`; # ここは2008/12/3以前の部分 $wget=`wget --secure-protocol=auto --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`; # --secure-protocol=autoを追加した(2008/8/19) $wget=`wget --secure-protocol=auto --no-check-certificate -O- -v -a $ip_change_log --http-user=$niftyid --http-passwd=$niftypass https://domain.nifty.com/cp/ddns/DdnsIpChangeAdd.do?change_type=ip` ; # 2008/12/3 のniftyのddnsリニューアルに伴い変更 # print "finish change ip address\n"; # 確認用の文を出力 }