#!/usr/bin/perl # use Dumpvar; # $log='/work/camelot/logs/agent_login'; $total='Total'; $q=0; # open(LOG, "< $log") or die "Unable to open $log, $!"; print STDERR "Processing "; while(<>) { s/ (GET|POST) .+//; if($ARGV ne $seen) { print STDERR $ARGV; $seen=$ARGV; } if(/ via /) { /^(.+) via (.+)/; $agent3=$1; $proxy=$2; } else { $agent3=$_; $proxy=''; } if($agent3=~/\(/) { if($agent3=~/^(.+) *\(([^\)]+)/) # agent (type) { $agent2=$1; $type=$2; } elsif($agent3=~/(null)/) { $agent2='unknown'; $type='unknown'; } elsif($agent3=~/\(([^\)]+)/) # (type) { $agent2='unknown'; $type=$1; } else { warn "Agent is '$agent3'"; } } else { $agent2=$agent3; } if($agent2=~/(.*) (.*)/) { $agent2=$1; } if($agent2=~/(.*) libwww/) { $agent2=$1; } if($agent2=~/[\\\/]/) { $agent2=~/^(.+)[\\\/](.+)/; # agent/version $agent=$1; $version=$2; } else { $agent=$agent2; $version=''; } if($agent=~/(.*)Mosaic/) { $version="$1 $version"; $agent='Mosaic'; } if($type=~/[; ]/) { if($type=~/;/) { ($os, $wha, $additional, $other)=split /;[ ]*/, $type, 4; } else { ($os, $wha, $additional)=split /[ ]+/, $type, 3; } if($os =~ /compatible/i) { $agent2=$wha; # print STDERR $wha; if($agent2=~/(.+) (.+)/) # agent/version { $agent=$1; $version=$2; }elsif($wha) { $agent=$wha; $version='Other'; } else { $os=''; } $os=$additional if $additional; undef $additional; } if($os=~/^win/i) { $additional=$os; $os='Windows'; } $additional="other" if($additional eq ''); if($os eq 'X11' and $additional=~/^(.+?)\s+(.*)$/) { $os=$1; $additional=$2; } $additional="other" if($additional eq ''); unless($os) { $os='Unknown'; $version='all'; $additional='other'; } $osCount{$os}++; $osCount{$total}++; if(!defined $osverCount{$os}) { $osverCount{$os}={$additional => 1}; } else { $osverCount{$os}->{$additional}++; } } $agent='Microsoft Internet Explorer' if($agent eq 'MSIE'); if($agent eq "") { $agent='Other'; print STDERR $_; } $version='Other' if($version eq ""); $aCount{$agent}++; $aCount{$total}++; if(!defined $verCount{$agent}) { $verCount{$agent}={$version => 1}; } else { $verCount{$agent}->{$version}++; } if($version=~/(\d)\./) { $verCount{$agent}->{"All version $1"}++; } if($proxy ne '') { $pCount{$proxy}++; $pCount{$total}++; } # last if ($q==0); if($q==0) { $q=1000; print STDERR '.'; } $q--; } close(LOG); #dumpvar('main', 'verCount'); #dumpvar('main', 'osverCount'); print("
$thing | \n"; print "$count | ", sprintf("%.2f", 100*($count/$countTot)), "% | |||
$subthing | \n"; print "\t$count | ", sprintf("%.2f", 100*($count/$subcountTot)), "% | ", # sprintf("%.2f%", 100*($count/$countTot)), " |