#!/opt/perl5/bin/perl sub get_data { my $if = shift; my $cmd = sprintf("echo 'lan\nppa %d\ndisplay\n' | /usr/sbin/lanadmin 2>&1", $if); open(CMD, "$cmd |") or die "could not run lanadmin: $!"; while() { chomp(); if (/^Inbound Octets/) { ($pad, $ioctets) = split(/=/); } elsif (/^Outbound Octets/) { ($pad, $ooctets) = split(/=/); } elsif (/^Inbound Unicast Packets/) { ($pad, $iupkts) = split(/=/); } elsif (/^Outbound Unicast Packets/) { ($pad, $oupkts) = split(/=/); } elsif (/^Inbound Non-Unicast Packets/) { ($pad, $inpkts) = split(/=/); } elsif (/^Outbound Non-Unicast Packets/) { ($pad, $onpkts) = split(/=/); } } close(CMD); # print "$ioctets $ooctets $iupktss $inpkts $oupkts $onpkts \n"; return($ioctets, $ooctets, $iupkts+$inpkts, $oupkts+$onpkts); } $sl = 5; print "Network ststistics\n"; print " kbits/s packets/s kbits/pkt\n"; print " In:Out In:Out In:Out\n"; ($lastioctets, $lastooctets, $lastipackets, $lastopackets) = &get_data($ARGV[0]); while(1) { sleep($sl); ($ioctets, $ooctets, $ipackets, $opackets) = &get_data($ARGV[0]); $ikbits = ( $ioctets - $lastioctets ) / 128 / $sl ; $okbits = ( $ooctets - $lastooctets ) / 128 / $sl ; $ipktra = ( $ipackets - $lastipackets ) / $sl ; $opktra = ( $opackets - $lastopackets ) / $sl ; if ( $ipktra == 0 ) { $ipktsize = 0; } else { $ipktsize = $ikbits / $ipktra; } if ( $opktra == 0 ) { $opktsize = 0; } else { $opktsize = $okbits / $opktra; } printf("%8.3f : %8.3f %4d : %4d %7.2f : %7.2f\n", $ikbits, $okbits, $ipktra, $opktra, $ipktsize, $opktsize); $lastioctets = $ioctets; $lastipackets = $ipackets; $lastooctets = $ooctets; $lastopackets = $opackets; }