Portál AbcLinuxu, 10. května 2025 03:04
sub SnmpWalk {
my $base = shift;
my $ses;
my $e;
my $err = undef;
my $res;
my $oid;
my $val;
my $tx;
($ses, $e) = Net::SNMP->session(
-hostname => 'snmp.domain.com',
-port => 161,
-version => 'snmpv2c',
-community => 'public';
if($ses) {
$oid = $base;
while(substr($oid, 0, length($base)) eq $base) {
$res = $ses->get_next_request(-varbindlist => [$oid]);
if($res) {
$oid = (keys(%$res))[0];
$val = $res->{$oid};
$tx = "$oid = $val";
if(substr($oid, 0, length($base)) eq $base) {
do_something($tx);
}
} elsif($ses->error_status() == 2) {
$oid = "";
} else {
$err = error("SnmpWalk - can not get snmp OIDs ($oid): '" . $ses->error() . "'");
$oid = "";
}
}
} else {
$err = error("SnmpWalk - can not create SNMP session: '$e'");
}
}
Nerikam, ze to nejde lip, ale funguje to.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.