Net-SNMP-Util
view release on metacpan or search on metacpan
examples/realifmon.pl view on Meta::CPAN
# make session
my ($ses, $err) = Net::SNMP->session(
-hostname => $host,
-version => "2",
-community => ($opt{c} || "public")
);
die "[ERROR] $err\n" unless defined $ses;
# main loop
my (%pdata, %cdata); # flag, previous and current octets data
my $first = 1;
while ( 1 ){
%cdata = ();
(my $ret, $err) = snmpwalk(
snmp => $ses,
oids => {
sysUpTime => '1.3.6.1.2.1.1.3',
ifTable => [
'1.3.6.1.2.1.31.1.1.1.1', # [0] ifName
'1.3.6.1.2.1.2.2.1.7', # [1] ifAdminStatus
'1.3.6.1.2.1.2.2.1.8', # [2] ifOperStatus
'1.3.6.1.2.1.31.1.1.1.6', # [3] ifHCInOctets
'1.3.6.1.2.1.31.1.1.1.10', # [4] ifHCOutOctets
'1.3.6.1.2.1.31.1.1.1.15', # [5] ifHighSpeed
] },
-mycallback => sub {
my ($s, $host, $key, $val) = @_;
return 1 if $key ne 'ifTable';
my $name = $val->[0][1];
return 0 if ( $regexp && $name !~ /$regexp/ );
# storing current octets data
$cdata{$name}{t} = time;
$cdata{$name}{i} = $val->[3][1];
$cdata{$name}{o} = $val->[4][1];
return 1;
}
);
die "[ERROR] $err\n" unless $ret;
# header
$console->Cls();
$console->Cursor(0, 0);
printf "%s, up %s - %s\n\n",
examples/realifmon.pl view on Meta::CPAN
{
my ($name, $astat, $ostat, $bw)
= map { $iftable->[$_]{$i} } qw( 0 1 2 5 );
if ( $first ){
printf "%-30s (%-10d) %2d %2d %10.1f %10s %10s\n",
$name, $i, $astat, $ostat, $bw/1000, '-', '-';
next; # skip first
}
# calculate (k)bps
my $td = $cdata{$name}{t} - $pdata{$name}{t};
my ($inbps, $outbps) = map {
my $delta = $cdata{$name}{$_} - $pdata{$name}{$_};
$delta<0? 0: $delta / $td / 1000; # Kbps
} qw( i o );
printf "%-30s (%-10d) %2d %2d %10.1f %10.1f %10.1f\n",
$name, $i, $astat, $ostat, map { $_/1000 } ($bw, $inbps, $outbps);
}
%pdata = %cdata;
$first = 0;
sleep $wait;
}
__END__
=head1 EXAMPLES
Simply way to check host with specifying community name is;
lib/Net/SNMP/Util.pm view on Meta::CPAN
# make session
my ($ses, $err) = Net::SNMP->session(
-hostname => $host,
-version => "2",
-community => ($opt{c} || "public")
);
die "[ERROR] $err\n" unless defined $ses;
# main loop
my (%pdata, %cdata); # flag, previous and current octets data
my $first = 1;
while ( 1 ){
%cdata = ();
(my $ret, $err) = snmpwalk(
snmp => $ses,
oids => {
sysUpTime => '1.3.6.1.2.1.1.3',
ifTable => [
'1.3.6.1.2.1.31.1.1.1.1', # [0] ifName
'1.3.6.1.2.1.2.2.1.7', # [1] ifAdminStatus
'1.3.6.1.2.1.2.2.1.8', # [2] ifOperStatus
'1.3.6.1.2.1.31.1.1.1.6', # [3] ifHCInOctets
'1.3.6.1.2.1.31.1.1.1.10', # [4] ifHCOutOctets
'1.3.6.1.2.1.31.1.1.1.15', # [5] ifHighSpeed
] },
-mycallback => sub {
my ($s, $host, $key, $val) = @_;
return 1 if $key ne 'ifTable';
my $name = $val->[0][1];
return 0 if ( $regexp && $name !~ /$regexp/ );
# storing current octets data
$cdata{$name}{t} = time;
$cdata{$name}{i} = $val->[3][1];
$cdata{$name}{o} = $val->[4][1];
return 1;
}
);
die "[ERROR] $err\n" unless $ret;
# header
$console->Cls();
$console->Cursor(0, 0);
printf "%s, up %s - %s\n\n",
lib/Net/SNMP/Util.pm view on Meta::CPAN
{
my ($name, $astat, $ostat, $bw)
= map { $iftable->[$_]{$i} } qw( 0 1 2 5 );
if ( $first ){
printf "%-30s (%-10d) %2d %2d %10.1f %10s %10s\n",
$name, $i, $astat, $ostat, $bw/1000, '-', '-';
next; # skip first
}
# calculate (k)bps
my $td = $cdata{$name}{t} - $pdata{$name}{t};
my ($inbps, $outbps) = map {
my $delta = $cdata{$name}{$_} - $pdata{$name}{$_};
$delta<0? 0: $delta / $td / 1000; # Kbps
} qw( i o );
printf "%-30s (%-10d) %2d %2d %10.1f %10.1f %10.1f\n",
$name, $i, $astat, $ostat, map { $_/1000 } ($bw, $inbps, $outbps);
}
%pdata = %cdata;
$first = 0;
sleep $wait;
}
__END__
=head2 3. Tiny MRTG with RRDTool (SNMPv2c)
With installing Tobias Oetiker's RRDTool and RRD::Simple, this sample will do
( run in 0.861 second using v1.01-cache-2.11-cpan-454fe037f31 )