Niftyダイナミックdns更新statusを表示するスクリプト
#!/usr/bin/perl -w # -w ワーニングを出す # 2021/12/28 ddnsの更新スクリプトと場所を変更したことに伴う修正 # /usr/lib/cgi-bin/nif_status.cgi mod 700 nobody # use strict; # 宣言した変数以外を使えなくする $| = 1; # ゼロ以外が代入されると出力をバッファリングしなくなる。 my $sec; my $min; my $hour; my $mday; my $mon; my $year; my $wday; my $yday; my $isdst; my $tt; my $null=""; my $line=""; # 読み込み書き込みファイルオープン # 読み取り 書き込み 追加 新規作成 上書き # < filename ○ × × × × # > filename × ○ × ○ ○ # >> filename × ○ ○ ○ × # +< filename ○ ○ × × × # +> filename ○ ○ × ○ ○ # +>> filename ○ ○ ○ ○ × # ======================== # ファイルによる呼び出し限定の場合 my $okfile1= "https://192.168.1.111/cgi-call/ddns_update.html"; # 呼び出しを許可するファイル名(localhost) my $okfile2= "https://www.nic.atnifty.com/cgi-call/ddns_update.html"; # 呼び出しを許可するファイル名(ddns nifty) my $okfile3= "https://nic825.ddo.jp/cgi-call/ddns_update.html"; # 呼び出しを許可するファイル名(ddns ddo.jp) # ############### ここからhtml出力へ htmlへ出力する場合この下の行が出力の最初になければならない print "Content-type: text/html; charset=UTF-8\n\n"; # 仮にとめる &from_check_f; # 呼び出し元チェック用のサブルーチン呼び出し #print "system \n"; #system 'tail /usr/local/bin/ddns4nifty/ip_change_log.txt'; # ------ ファイルを1行ずつ読み込み、EOFで終了 ---------------- # ------ open分のファイル名の後ろに"|"を付けることでファイル名をコマンドと見なしその出力をファイルハンドラに入力できる ---- #print "open ddns4nifty/ip_change_log.txt<br>\n"; #open( IN, "tail -30 /usr/local/bin/ddns4nifty/ip_change_log.txt |"); print "open nifty status log<br>\n"; open( IN, "tail -30 /home/User/crontab/ddnsNifty/nifty-ip_change_status |"); while ( $line = <IN>) { print $line,"<br>"; } close(IN); exit; # --------- 呼び出し元チェック用のサブルーチン ----------------------- sub from_check_f { if($ENV{'HTTP_REFERER'} ne $okfile1){ if($ENV{'HTTP_REFERER'} ne $okfile2){ if($ENV{'HTTP_REFERER'} ne $okfile3){ print "不正なCGI呼び出しです。"; exit; } } } # ---------- 念のためPOST限定 --------- # if( $ENV{'REQUEST_METHOD'} eq "GET" ) { # print "不正な呼び出しです(GET)。"; # exit; # } } # --------- チェック用のサブルーチン END -------------------