#!/usr/bin/perl use Socket; # CONFIGURATION $WHICH_ntpq = '/usr/bin/ntpq'; $WHICH_host = 'ntp.jamfunk.jp'; # 表示置き換え定義 $strname{'status'} = "参照状態"; $strname{'remote'} = "タイムサーバ名"; $strname{'refid'} = "参照元"; $strname{'st'} = "階層"; $strname{'t'} = "階層種類"; $strname{'when'} = "ポーリング
経過時間"; $strname{'poll'} = "ポーリング
間隔"; $strname{'reach'} = "到達可能
レジスタ"; $strname{'delay'} = "遅延(msec)"; $strname{'offset'} = "ズレ(msec)"; $strname{'jitter'} = "分散(msec)"; $strname{'disp'} = "分散(msec)"; $strstat{'_'} = " 遠"; $strstat{'x'} = "×偽"; $strstat{'.'} = "×多"; $strstat{'-'} = "×遠"; $strstat{'+'} = "可"; $strstat{'#'} = "可"; $strstat{'*'} = "同期"; $strstat{'o'} = "PPS"; $strstat{'l'} = "local"; $strstat{'u'} = "unicast"; $strstat{'m'} = "multicast"; $strstat{'b'} = "broadcast"; # ntpqコール $res = `$WHICH_ntpq -pn "$WHICH_host"`; chomp $res; ($head_row,$tmp,@res_row) = split(/\n/,$res); # HTTPヘッダ print <<"HTTP_HEADER"; Content-Type: text/html; charset=EUC-JP Pragma: no-cache Cache-Control: no-cache Expires: Thu, 18 May 2006 00:00:00 GMT Content-Language: ja HTTP_HEADER # HTMLヘッダ print <<"HTML_HEADER"; NTP server reference status - $WHICH_host HTML_HEADER # ヘッダ @head_col = split(/\s+/, $head_row); $head_col[0] = "status"; $tmp = $#head_col + 1; print <<"HTML_TABLE_HEADER"; HTML_TABLE_HEADER foreach(@head_col) { print " \n"; #データ foreach(@res_row) { # 行背景色 if($_ =~ /^[o\*]/) { $strbgcolor = "#ffcccc"; } elsif($_ =~ /^[ x\.\-]/) { $strbgcolor = "#ffffcc"; } else { $strbgcolor = "#ccffcc"; } # statusデータ整形 $_ =~ s/^ /_/; $_ =~ s/^(.)/$1 /; # カラム分割 @res_col = split(/\s+/, $_); # 行表示 print " \n"; # 列表示 $i = 0; foreach(@res_col) { # IPアドレス逆引き&整形 if($_ =~ /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/) { $_ = &gethostbyip($_) . "
($_)"; # ステータス整形 } elsif($i < 5 && $strstat{$_} ne '') { $_ = $strstat{$_}; } # セル設定 if($i == 3 || $i > 4){ $stralign = " align=\"right\""; } else { $stralign = ""; } # 表示 print " $_\n"; $i++; } print " \n"; } # テーブル閉じる print <<"HTML_TABLE_FOOTER";
NTPサーバ参照状態 - $WHICH_host
$strname{$_}\n"; } print "
"showntpq.cgi" by SUNAGAWA Hiroyuki / Studio JamPack 2007
HTML_TABLE_FOOTER exit 0; # ホスト逆引き sub gethostbyip{ my $tmp = gethostbyaddr(inet_aton($_[0]), &AF_INET); if($tmp eq '') { $tmp = $_[0]; } return $tmp; }