#! /usr/bin/perl use strict; use Net::SNMP qw(:snmp); my ($session, $error) = Net::SNMP->session( -version => 'snmpv2c', -nonblocking => 1, -hostname => '192.168.1.1', -community => 'public', -port => 161 ); if (!defined($session)) { printf("ERROR: %s.\n", $error); exit 1; } my $ifTable = '.1.3.6.1.2.1.2.2.1.2'; my $result = $session->get_bulk_request( -callback => [\&table_cb, {}], -maxrepetitions => 10, -varbindlist => [$ifTable] ); if (!defined($result)) { printf("ERROR: %s.\n", $session->error); $session->close; exit 1; } snmp_dispatcher(); sub table_cb { my ($session) = @_; my $table; if (!defined($session->var_bind_list)) { printf("ERROR: %s\n", $session->error); } else { my $next; foreach my $oid (oid_lex_sort(keys %{$session->var_bind_list})) { if (!oid_base_match($ifTable, $oid)) { $next = undef; last; } $next = $oid; $table->{$oid} = $session->var_bind_list->{$oid}; } foreach my $oid (oid_lex_sort(keys(%{$table}))) { printf("%s => %s\n", $oid, $table->{$oid}); } } }