📄 access-log-matrix.pl
字号:
#!/usr/local/bin/perl# access-log-matrix.pl# # Duane Wessels, Dec 1995# # Stdin is a Harvest access log (in the old, non-common logfile format!).# The output is a matrix of hostnames and log entry types, plus totals.while (<>) { chop; @F = split; $when = $F[0]; $first = $when unless ($first); $last = $when; $what = pop @F; $size = pop @F; $host = pop @F; $HOSTS{$host}++; $HOSTS{'TOTAL'}++; if ($what eq 'TCP_DONE') { $TCP_DONE{$host}++; $TCP_DONE{'TOTAL'}++; } elsif ($what eq 'TCP_HIT') { $TCP_HIT{$host}++; $TCP_HIT{'TOTAL'}++; } elsif ($what eq 'TCP_MISS') { $TCP_MISS{$host}++; $TCP_MISS{'TOTAL'}++; } elsif ($what eq 'TCP_MISS_TTL') { $TCP_MISS_TTL{$host}++; $TCP_MISS_TTL{'TOTAL'}++; } elsif ($what eq 'UDP_HIT') { $UDP_HIT{$host}++; $UDP_HIT{'TOTAL'}++; } elsif ($what eq 'UDP_MISS') { $UDP_MISS{$host}++; $UDP_MISS{'TOTAL'}++; } else { $OTHER{$host}++; $OTHER{'TOTAL'}++; }}print ' HOSTNAME: '. `hostname`;($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdat) = localtime($first);printf "FIRST LOG ENTRY: %s/%s/%s %.2d:%.2d:%.2d\n", $year,$mon+1,$mday, $hour,$min,$sec;($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdat) = localtime($last);printf " LAST LOG ENTRY: %s/%s/%s %.2d:%.2d:%.2d\n", $year,$mon+1,$mday, $hour,$min,$sec;print "\n";printf ("%25.25s %5s %5s %5s %5s %5s %5s %5s %5s\n", '', 'TCP', 'TCP', 'TCP', 'TCP', 'UDP', 'UDP', '', '');printf ("%25.25s %5s %5s %5s %5s %5s %5s %5s %5s\n", 'HOST', 'HIT', 'MISS', 'TTL', 'DONE', 'HIT', 'MISS', 'OTHER', 'TOTAL');printf ("%25.25s %5s %5s %5s %5s %5s %5s %5s %5s\n", '-'x25, '-'x5, '-'x5, '-'x5, '-'x5, '-'x5, '-'x5, '-'x5, '-'x5);foreach $h (sort totalcmp keys %HOSTS) { next if ($h eq 'TOTAL'); ($a1,$a2,$a3,$a4) = split('\.', $h); ($fqdn, @F) = gethostbyaddr(pack('C4',$a1,$a2,$a3,$a4),2); $fqdn = $h unless ($fqdn ne ''); printf "%25.25s %5d %5d %5d %5d %5d %5d %5d %5d\n", $fqdn, $TCP_HIT{$h}, $TCP_MISS{$h}, $TCP_MISS_TTL{$h}, $TCP_DONE{$h}, $UDP_HIT{$h}, $UDP_MISS{$h}, $OTHER{$h}, $HOSTS{$h};}printf ("%25.25s %5s %5s %5s %5s %5s %5s %5s %5s\n", '-'x25, '-'x5, '-'x5, '-'x5, '-'x5, '-'x5, '-'x5, '-'x5, '-'x5);printf "%25.25s %5d %5d %5d %5d %5d %5d %5d %5d\n", 'TOTAL', $TCP_HIT{'TOTAL'}, $TCP_MISS{'TOTAL'}, $TCP_MISS_TTL{'TOTAL'}, $TCP_DONE{'TOTAL'}, $UDP_HIT{'TOTAL'}, $UDP_MISS{'TOTAL'}, $OTHER{'TOTAL'}, $HOSTS{'TOTAL'};exit 0;sub hostcmp { $a cmp $b}sub totalcmp { $HOSTS{$b} <=> $HOSTS{$a}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -