in reply to Re: Storing SNMP Next Request into a Hash or Array
in thread Storing SNMP Next Request into a Hash or Array

Thanks Muskrat and zby you helped steer me into the light. I have one more question and I think that this will make my script very large. Below is the script so far and it looks but it will not 'walk' the MIB table it only gets the first responce and then stops. I would have thought that the get_next_request would have built into it a way to keep going until the last entry of the MIB table.
What i am basically looking for is what is the best looping mechanism for this purpose?
#!/usr/local/bin/perl -w use strict; use Net::SNMP; use Data::Dumper; my $snmp = Net::SNMP->session( -hostname => '192.3.3.1' +, -community => 'public', -port => '161', ); my @oid; $oid[0]='.1.3.6.1.2.1.4.20.1.2'; my @vars = $snmp->get_next_request( -varbindlist => \@oid, ); my $error = $snmp->error; $snmp->close; print Dumper(\@vars); print Dumper(\@oid); print "the OID array is\n"; print "@oid\n"; print "The Error??\n"; print "$error\n";

Replies are listed 'Best First'.
Re: Re: Re: Storing SNMP Next Request into a Hash or Array
by CongoGrey (Sexton) on May 13, 2003 at 18:13 UTC
    Okay i am very close now I can now walk the complete MIB but, my Perl script does not seem to let me store the information into a hash:
    my %var = $snmp->get_table( -baseoid => $oid);
    Gives me an error:
    Reference found where even-sized list expected
    But, if I make the 'var' variable a '$' and use Dumper the information is there:
    $VAR1 = [ { '.1.3.6.1.2.1.4.20.1.2.10.61.17.1' => '0', '.1.3.6.1.2.1.4.20.1.2.10.61.10.1' => '42', '.1.3.6.1.2.1.4.20.1.2.10.76.7.1' => '47', '.1.3.6.1.2.1.4.20.1.2.10.61.0.126' => '1' } ];

      my $table = $snmp->get_table( -baseoid => $oid); # $table contains a h +ash reference print $table->{'.1.3.6.1.2.1.4.20.1.2.10.61.10.1'},$/; # displays 42

      Read tye's References quick reference for a more detailed explaination.