diff options
Diffstat (limited to 'perl/SNMP/examples/pingmib.pl')
-rwxr-xr-x | perl/SNMP/examples/pingmib.pl | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/perl/SNMP/examples/pingmib.pl b/perl/SNMP/examples/pingmib.pl new file mode 100755 index 0000000..e6aa792 --- /dev/null +++ b/perl/SNMP/examples/pingmib.pl @@ -0,0 +1,46 @@ +#!/usr/bin/env perl + +# Ping a host via the CISCO-PING-MIB. For more information about the +# CISCO-PING-MIB, see also +# http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&mibName=CISCO-PING-MIB. + +use strict; +use SNMP; + +my $target = shift || die "no ping target supplied\n"; # numeric ip address +my $host = shift || 'localhost'; +my $community = shift || 'private'; + +{ + my $sess = new SNMP::Session (DestHost => $host, + Community => $community, + Retries => 1); + + my $dec = pack("C*",split /\./, $target); + my $oid = ".1.3.6.1.4.1.9.9.16.1.1.1"; + my $row = "300"; + my $res; + + $res = $sess->set([ + ["$oid.16", $row, 6, "INTEGER"], + ["$oid.16", $row, 5, "INTEGER"], + ["$oid.15", $row, "MoNDS", "OCTETSTR"], + ["$oid.2", $row, 1, "INTEGER"], + ["$oid.4", $row, 20, "INTEGER"], + ["$oid.5", $row, 150, "INTEGER"], + ["$oid.3", $row, $dec, "OCTETSTR"]]); + defined($res) || die "row creation failed"; + + $res = $sess->set([["$oid.16", $row, 1, "INTEGER"]]); + defined($res) || die "row activation failed"; + + sleep 30; + my ($sent, $received, $low, $avg, $high, $completed) = $sess->get([ + ["$oid.9", $row], ["$oid.10", $row], ["$oid.11", $row], + ["$oid.12", $row], ["$oid.13", $row], ["$oid.14", $row]]); + + printf "Packet loss: %d% (%d/%d)\n", (100 * ($sent-$received)) / $sent, + $received, $sent; + print "Average delay $avg (low: $low high: $high)\n"; + $sess->set(["$oid.16", $row, 6, "INTEGER"]); +} |