данные OID универсальны для всех комутаторов
Код:
#!/usr/local/bin/perl
use SNMP;
$session = new SNMP::Session(DestHost => $ARGV[0], Community => $ARGV[1], UseSprintValue => 1, Version=> 2);
die "session creation error: $SNMP::Session::ErrorStr" unless (defined $session);
$vars = new SNMP::VarList(['dot1dTpFdbAddress'],
['dot1dTpFdbPort']);
#<->dot1dTpFdbAddress<->.1.3.6.1.2.1.17.4.3.1.1
#<->dot1dTpFdbPort<>.1.3.6.1.2.1.17.4.3.1.2
($mac,$port) = $session->getnext($vars);
while (!$session->{ErrorStr} and $$vars[0]->tag eq "dot1dTpFdbAddress"){
print "$mac -> $port\n";
($mac,$port) = $session->getnext($vars);
};
dmvy@biscuit:trash% ./snmp_fdb.pl 172.xx.xx.7 my_community
"00 0B BE 2F A4 81 " -> 28
"00 1E 58 46 14 E4 " -> 53
"00 21 91 05 05 81 " -> 28
"00 21 91 85 73 28 " -> 25
"00 21 91 85 73 90 " -> 26
"00 22 B0 BC 65 D1 " -> 28
"00 A2 B4 74 28 B1 " -> 4
"00 E0 B1 A5 4C 1C " -> 28
"00 E0 B1 A5 4C 23 " -> 28