#\perl\bin\perl.exe -wprint "Content-type: text/html\n\n";### DATA Locale & Type$file="\\home\\httpd\\html\\log\\tbLOG.txt";$TITLE="Telerobotics Log File";### Filters$CAMPUS="\\.bradley\\.edu";$TESTERS="webbot|webbot\\.bradley\\.edu|tnt\\S+\.mtco\.com";### Open data fileopen (LOGFILE, "< $file") or die( "Couldn't Open LOG File");### Variables$visits =0;$offcampus =0;$oncampus =0;$tests =0;$max =0;%guests =();%campus =();%olek =();%domain =();%country =();### Processing log filewhile( <LOGFILE>) { #Sat Oct 30 15:14:46 CDT 1999 : reset requested by tnt4-38.mtco.com/206.69.130.38 #Sat Oct 30 15:14:46 CDT 1999 : server terminated #Sat Oct 30 15:14:48 CDT 1999 : server started #Sat Oct 30 15:20:13 CDT 1999 : connected (1) from 205.237.61.148/205.237.61.148 #Sat Oct 30 15:21:41 CDT 1999 : disconnect (1) from 205.237.61.148/205.237.61.148 #Sat Oct 30 15:22:41 CDT 1999 : connected (1) from tnt4-38.mtco.com/206.69.130.38 #Sat Oct 30 15:23:43 CDT 1999 : disconnect (1) from tnt4-38.mtco.com/206.69.130.38 # 1 2 3 4 # date : event (cli#) from addr /ipaddr if( /^(.+)\s+:\s+connected\s+\((.+)\)\s+from\s+(\S+)\/(\S+)$/o ) { my ($date, $cli, $addr, $ipaddr)=($1, $2, $3, $4); $visits++; $addr=lc($addr); if ( $addr !~ /^($TESTERS)$/io ) { # not testers nor Olek # simplifying address for domains # 1 if ( $addr =~ /^(\d+\.\d+)\.\d+\.\d+$/o) { $domain{"$1.*.*"}++; $country{"??"}++; # 1 2 } elsif ( $addr =~ /^(.*\.)?([^.]+\....)$/io) { $domain{$2}++; $country{"us"}++; # 1 2 3 } elsif ( $addr =~ /^(.*\.)?([^.]+\.[^.]+\.(..))$/io) { $domain{$2}++; $country{$3}++; } else { $domain{$addr}++; $country{"??"}++; } if ( $addr !~ /^\S+$CAMPUS$/io ) { # off campus $offcampus++; $guests{$addr}++; } else { # on campus $oncampus++; $campus{$addr}++; } } else { # testers and Olek $tests++; $olek{$addr}++; } #checking for max connections at a time if ($cli>$max) { $max=$cli; } }}close (LOGFILE);@kguests=keys(%guests);@kcampus=keys(%campus);@kdomain=keys(%domain);@kcountr=keys(%country);### Printing header print <<enough;<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><!-- Created by Greg Harmon --><HTML><HEAD><TITLE>$TITLE</TITLE><META HTTP-EQUIV="Pragma" CONTENT="no cache"><META HTTP-EQUIV="Refresh" CONTENT="600"><LINK REV="made" HREF="mailto:webbot\@webbot.bradley.edu"></HEAD><BODY BGCOLOR="#FFFFFF" TEXT="#000000"><H1><FONT FACE="Arial,helvetica" COLOR="#CF0000">$TITLE</FONT></H1><PRE>enough########################$visitors=$#kguests+$#kcampus+2;$ofcators=$#kguests+1;$oncators=$#kcampus+1;$domators=$#kdomain+1;$countors=$#kcountr+1;print "<H3>VISITORS SUMMARY</H3>\n";printf "Visitors: %5d\n", $visitors;printf "off campus: %5d\n", $ofcators;printf "on campus: %5d\n", $oncators;print "\n";printf "Domains: %5d\n", $domators;printf "Countries: %5d\n", $countors;print "\n";printf "All Visits: %5d\n", $visits;printf "off campus: %5d\n", $offcampus;printf "on campus: %5d\n", $oncampus;printf "in peak: %5d\n", $max;### Printing statisticsprint "\n\n\n";print "<H3>VISITORS BY DOMAINS:</H3>\n";print "visitor". " "x43 ."visits\n";print "="x56 ."\n";foreach $key (sort {$domain{$b} <=> $domain{$a}} @kdomain) { printf "%-50s %5d\n", $key, $domain{$key};}### Printing statisticsprint "\n\n\n";print "<H3>BY COUNTRY:</H3>\n";print "visitor". " "x43 ."visits\n";print "="x56 ."\n";foreach $key (sort {$country{$b} <=> $country{$a}} @kcountr) { printf "%-50s %5d\n", $key, $country{$key};}### Printing statisticsprint "\n\n\n";print "<H3>OFF CAMPUS VISITOR LIST:</H3>\n";print "visitor". " "x43 ."visits\n";print "="x56 ."\n";foreach $key (sort {$guests{$b} <=> $guests{$a}} @kguests) { printf "%-50s %5d\n", $key, $guests{$key};}### Printing statisticsprint "\n\n\n";print "<H3>ON CAMPUS VISITOR LIST:</H3>\n";print "visitor". " "x43 ."visits\n";print "="x56 ."\n";foreach $key (sort {$campus{$b} <=> $campus{$a}} @kcampus) { printf "%-50s %5d\n", $key, $campus{$key};}### Printing statistics#print "\n\n\n";#print "<H3>TESTER LIST:</H3>\n";#print "visitor". " "x43 ."visits\n";#print "="x56 ."\n";#foreach $key (sort {$olek{$b} <=> $olek{$a}} keys(%olek)) {# printf "%-50s %5d\n", $key, $olek{$key};#}### Printing HTML tailer print <<enough;</PRE></BODY></HTML>enough
syntax highlighted by Code2HTML, v. 0.8.11