#!/usr/bin/perl -w # real time port stats from snmp queries # tom@marmot.org.uk use strict; use SNMP; use Time::HiRes; if (!@ARGV) { print "$0 [hostname] [community] [port number]\n"; print "output is: kbit/s in, kbit/s out, microseconds to run the query\n"; exit 1; } my $snmp = new SNMP::Session( DestHost => shift, Community => shift, Version => 1 ); $| = 1; my $in_octets = 0; my $out_octets = 0; my $old_in_octets = 0; my $old_out_octets = 0; my $int = shift; while (1) { my ($second,$usecond) = Time::HiRes::gettimeofday(); my $h1time = ($second*1000000)+$usecond; $old_in_octets = $in_octets; $old_out_octets = $out_octets; $in_octets = $snmp->get("ifInOctets.$int"); $out_octets = $snmp->get("ifOutOctets.$int"); ($second,$usecond) = Time::HiRes::gettimeofday(); my $h2time = ($second*1000000)+$usecond; if ($old_in_octets) { print "\r"; print int((($in_octets - $old_in_octets) * 8) / (1024*(1+($h2time - $h1time)/1000000))); print " Kb/s in, "; print int((($out_octets - $old_out_octets) * 8) / (1024*(1+($h2time - $h1time)/1000000))); print " Kb/s out, ".($h2time - $h1time)."us "; } sleep 1; } # we should never get here exit 1;