#!/usr/bin/perl # # namazu access_log analize script # use NKF; ########################################################### # namazuの ログまでのパス # ふつうは /usr/local/var/namazu/index/NMZ.slog # あたりにあります。 $log_file = "/disk2/db/namazu/NMZ.slog"; # ページのタイトル $title = "namazu access_log"; # バーグラフとして使う画像。このスクリプトと同じ場所にあるのが望ましいです。 # http://w3.fast.co.jp/dw/bar.gif を参考にしてください。 $image_file = "bar.gif"; # namazu.cgiの場所 $namazu = "namazu.cgi?lang=ja&key="; $date_now = localtime; $cgi = $ENV{'SCRIPT_NAME'}; if ($ENV{'QUERY_STRING'} ne ""){ $min_remote = "1"; $min_key = "1"; $query = $ENV{'QUERY_STRING'}; $query =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; open(DB, "grep \"$query\" $log_file|") || die "Cannot Open Log File $log_file: $!"; }else{ $min_remote = "1"; $min_key = "1"; open(DB, "$log_file") || die "Cannot Open Log File $log_file: $!"; } @lines = ; close(DB); $accesses = @lines; if($lines[1] =~ /(.*)\t(.*)\t(.*)\t(.*)/){ $first_date = $4; } else { $first_date = 0; } if ($lines[($accesses - 1)] =~ /(.*)\t(.*)\t(.*)\t(.*)/){ $last_date = $4; } else { $last_date = 0; } foreach $line (@lines) { if ($line =~ /(.*)\t(.*)\t(.*)\t(.*)/){ $keyword = nkf("-eXZ1", $1); $remote_host = $3; push(@KEYWORD, $keyword); if ($remote_host =~ /(([^.]+)\.([^.]+)\.([A-Za-z]+))$/){ $domain = $1; }else{ $domain = $remote_host; } push(@REMOTE_HOST, $domain,); } } foreach (@REMOTE_HOST) { $remote{($_)[0]}++; $j++; } foreach (@KEYWORD) { $key_w{($_)[0]}++; $l++; } &html_header; sub html_header { foreach (sort { $remote{$b} <=> $remote{$a} } keys %remote) { if ($remote{$_} >= 1) { push (@rem, $remote); } } $REMOTE_HOST = @rem; foreach (sort { $key_w{$b} <=> $key_w{$a} } keys %key_w) { if ($key_w{$_} >= 1) { push (@keysref, $key_w); } } $KEYWORD = @keysref; print <<"__EOH__"; Content-type: text/html $title