pingmib.pl
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:1k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. use strict;
  2. use SNMP;
  3. my $target = shift || die "no ping target suppliedn"; # numeric ip address
  4. my $host = shift || 'localhost';
  5. my $community = shift || 'private';
  6. {
  7.         my $sess = new SNMP::Session (DestHost => $host,
  8.       Community => $community,
  9.       Retries => 1);
  10.         my $dec = pack("C*",split /./, $target);
  11.         my $oid = ".1.3.6.1.4.1.9.9.16.1.1.1";
  12.         my $row = "300";
  13.         $sess->set([
  14.                 ["$oid.16", $row, 6, "INTEGER"],
  15.                 ["$oid.16", $row, 5, "INTEGER"],
  16.                 ["$oid.15", $row, "MoNDS", "OCTETSTR"],
  17.                 ["$oid.2", $row, 1, "INTEGER"],
  18.                 ["$oid.4", $row, 20, "INTEGER"],
  19.                 ["$oid.5", $row, 150, "INTEGER"],
  20.                 ["$oid.3", $row, $dec, "OCTETSTR"]]);
  21.         $sess->set([["$oid.16", $row, 1, "INTEGER"]]);
  22.         sleep 30;
  23.         my ($sent, $received, $low, $avg, $high, $completed) = $sess->get([
  24.                 ["$oid.9", $row], ["$oid.10", $row], ["$oid.11", $row],
  25.                 ["$oid.12", $row], ["$oid.13", $row], ["$oid.14", $row]]);
  26.         printf "Packet loss: %d% (%d/%d)n", (100 * ($sent-$received)) / $sent,
  27.                 $received, $sent;
  28.         print "Average delay $avg (low: $low high: $high)n";
  29.         $sess->set(["$oid.16", $row, 6, "INTEGER"]);
  30. }