http://qs321.pair.com?node_id=852162

spickles has asked for the wisdom of the Perl Monks concerning the following question:

This may not necessarily be perl related per se, but I'm hoping someone knows enough about SNMP to help anyways as I'm sure I'm not implementing the Net::SNMP get_bulk_request properly. If I use my MIB walk via SolarWinds, I get a tree that represents all of the MAC addresses of the APs connected to the controller. I see an OID that represents the AP MAC address in general, but each MAC address has additional OID digits that are added on to show each individual record. So if I try to enter the root OID that is common to each AP, I get an error that states that there is noSuchInstance. This behavior goes away when I input the OID for a particular AP. So how does my SolarWinds program walk the MIB successfully, yet I cannot perform the same function with Net::SNMP? A couple of the OIDs are as follows:

Root OID: 1.3.6.1.4.1.9.9.513.1.1.1.1.2
AP Specific OID: 1.3.6.1.4.1.9.9.513.1.1.1.1.2.0.23.223.167.189.192

So I'm hoping someone can tell me either what it is about how SNMP works that I don't understand, or what it is about my code that doesn't work to grab all of the MAC addresses for my APs. Code is below:

Thanks,
Scott
#!c:/perl/bin/perl use strict; use warnings; use Net::SNMP; #my $OID = '1.3.6.1.4.1.9.9.513.1.1.1.1.2.0.23.223.167.189.192'; my $OID = ("1.3.6.1.4.1.9.9.513.1.1.1.1.2"); my ($session, $error) = Net::SNMP->session( -hostname => '172.16.0.2', -version => 'snmpv2c', -community => 'private' ); if (!defined $session) { printf "ERROR: %s.\n", $error; exit 1; } my $result = $session->get_request(-varbindlist => [ $OID ],); #my $result = $session->get_bulk_request(-varbindlist => [ \@OID ],); if (!defined $result) { printf "ERROR: %s.\n", $session->error(); $session->close(); exit 1; } #print "$result->{$OID}\n"; foreach my $key ( sort keys %$result ) { print "$key => $$result{$key}\n"; } $session->close();