Hello there,
I got a terrible headache collecting some instance specific data from an Cisco
Router using SNMPv2c, GET, NET-SNMP (Perl SNMP.pm) V.5.1.4 on an AIX 5.3.
Some time it works fine, but then there are errors. Perl canŽt find the
responsed data.
I traced the last 5 Days while looking for bugs in my code and found a strange
behavior thanks to iptrace, wireshark and $SNMP::debugging =3.
It looks like if Net-SNMP v.5.1.4 sends a get request (say with request-id 10)
waiting for a receive and "somehow" sees an earlier responsed packet (say with
request-id 8).
Instead of comparing the request-id, the varbinds item name or atlast the
timestamp, this response is taken.
The error appears randomly (using get/Bulkwalk/getbulk) too.
If my community wasnŽt spoiled all over the dump, I would hand it to you. It
put a tiny&dirty skript together which will replicate the error.
Thanks,
Bastian
###################################################use warnings; use SNMP;
use SNMP::Multi; my @data = <DATA>;
my @routers = qw (); #place routers
my @mib = qw ( ); #place mibs see list after __DATA__ my $nonrep = 0;
my $rep = 0;
my @nonrep = ();
my @rep = ();
foreach my $ids ( @mib ) {
foreach my $dainline ( @data ) {
$da =~ s/\s+//;
print "$da\n";
if ($ids =~ /$dainline\.\d/) {
push (@nonrep,$ids);
print "found a nonrep\n";
$nonrep++;
} elsif ($m =~ /$dainline\b/) {
push (@rep,$ids);
print "found a rep\n";
$rep++;
}
}
} my $methode = undef; if ($nonrep){
@mib = ();
push (@mib,@nonrep);
$methode = 'get';
&frag;
$nonrep=0;
} if ($rep) {
@mib = ();
push (@mib,@rep);
$methode = 'bulkwalk';
&frag;
}
$nonrep = @nonrep;
print "Found $rep Reps and $nonrep Nonreps.\nUsing Methode: $methode!\n";
@mib=();
@nonrep=();
@rep=(); sub frag() {
my $mib = undef;
my $lastdefhe = 0;
my $oid = 1;
my $requested = SNMP::Multi::VarReq->new (
nonrepeaters => $nonrep,
hosts => [ @routers ],
vars => [ $mib[0] ],
);
while (defined ($mib[$oid])) {
print "ask for $mib[$oid]\n";
$requested->add( vars => [ $mib[$oid] ] );
$oid++;
$lastdefhe++;
}
#print "Vars to request $lastdefhe\n";
my $session = SNMP::Multi->new (
Method => "$methode",
MaxSessions => 100,
PduPacking => 32,
Community => "xxx",
Version => '2c',
Timeout => 5,
Retries => 3,
) or warn "$SNMP::Multi::error \n";
$session->request ($requested) or print $session->error;
my $resp = $session->execute(15) or print "Execute: $SNMP::Multi::error\n";
undef %reprouters;
if (defined $resp) {
print "got response\n";
for my $host2 ($resp->hosts()) {
print "host $host2\n";
$reprouters{$host2} = $host2;
}
}
# *** Feststellen ob welche fehlen ***
for $host3 (@routers) {
if (!$reprouters{$host3}) {
$tomdatum = localtime($now);
print LOG "$now: $tomdatum $host3 hat nicht geantwortet\n";
print "$now: $tomdatum $host3 hat nicht geantwortet.\n";
}
}
if (defined $resp) {
for my $host ($resp->hosts()) {
print "looking host $host resultes\n";
# *** Ist dieser host im Ergebnis vorhanden ***
for my $result ($host->results()) {
print "$result host resultes\n";
if (defined $result) {
if ($result && $result->error()) {
print "got errors\n";
# *** no value received for this***
next;
} else {
print "no errors\n";
for my $varlist ($result->varlists()) {
print "Varlist:\n", map {"\t" . $_->fmt() . "\n" } @$varlist;
print "working $varlist list requestet with $methode\n";
foreach (@{$varlist}) { foreach (@$_) {print "$_ \n";};};
}
}
}
}
}
}
}
} #sysObjectID 1.3.6.1.2.1.1.2 .0
#sysUpTime 1.3.6.1.2.1.1.3 .0
#tcpCurrEstab 1.3.6.1.2.1.6.9 .0
#ipMRouteHCOctets 1.3.6.1.2.1.83.1.1.2.1.16
#ipMRouteUpTime 1.3.6.1.2.1.83.1.1.2.1.6
#ifLastChange 1.3.6.1.2.1.2.2.1.9
#ifHCInOctets 1.3.6.1.2.1.31.1.1.1.6
#ifHCInUcastPkts 1.3.6.1.2.1.31.1.1.1.7
#ifHCInMulticastPkts 1.3.6.1.2.1.31.1.1.1.8
#ifHCInBroadcastPkts 1.3.6.1.2.1.31.1.1.1.9
#ifHCOutOctets 1.3.6.1.2.1.31.1.1.1.10
#ifHCOutUcastPkts 1.3.6.1.2.1.31.1.1.1.11
#ifHCOutMulticastPkts 1.3.6.1.2.1.31.1.1.1.12
#ifHCOutBroadcastPkts 1.3.6.1.2.1.31.1.1.1.13
#ifHighSpeed 1.3.6.1.2.1.31.1.1.1.15
#ipMRouteInterfaceHCInMcastOctets 1.3.6.1.2.1.83.1.1.4.1.7
#ipMRouteInterfaceHCOutMcastOctets 1.3.6.1.2.1.83.1.1.4.1.8
#casAuthenResponseTime 1.3.6.1.4.1.9.10.56.1.2.1.1.6
#casAcctResponseTime 1.3.6.1.4.1.9.10.56.1.2.1.1.22
__DATA__
1.3.6.1.2.1.1.2
1.3.6.1.2.1.1.3
1.3.6.1.2.1.6.9
1.3.6.1.2.1.83.1.1.4.1.7
1.3.6.1.2.1.2.2.1.9
1.3.6.1.2.1.31.1.1.1.6
1.3.6.1.2.1.31.1.1.1.7
1.3.6.1.2.1.31.1.1.1.8
1.3.6.1.2.1.31.1.1.1.9
1.3.6.1.2.1.31.1.1.1.10
1.3.6.1.2.1.31.1.1.1.11
1.3.6.1.2.1.31.1.1.1.12
1.3.6.1.2.1.31.1.1.1.13
1.3.6.1.2.1.31.1.1.1.15
1.3.6.1.2.1.83.1.1.4.1.7
1.3.6.1.2.1.83.1.1.4.1.8
1.3.6.1.2.1.83.1.1.2.1.6
1.3.6.1.4.1.9.10.56.1.2.1.1.6
1.3.6.1.4.1.9.10.56.1.2.1.1.22#########################################################
Jetzt neu! Schützen Sie Ihren PC mit McAfee und WEB.DE. 3 Monate
kostenlos testen. *http://www.pc-sicherheit.web.de/startseite/?mc=022220*
[http://www.pc-sicherheit.web.de/startseite/?mc=022220]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users