для того, чтобы смотреть на вланах, к коммунити добавляете @vid
например @550 и миб .1.3.6.1.2.1.17.4.3.1.1
SNMPv2-SMI::mib-2.17.4.3.1.1.0.1.48.183.252.144 = Hex-STRING: 00 01 30 B7 FC 90
SNMPv2-SMI::mib-2.17.4.3.1.1.0.4.56.241.74.65 = Hex-STRING: 00 04 38 F1 4A 41
SNMPv2-SMI::mib-2.17.4.3.1.1.0.4.56.252.75.32 = Hex-STRING: 00 04 38 FC 4B 20
SNMPv2-SMI::mib-2.17.4.3.1.1.0.4.56.252.75.33 = Hex-STRING: 00 04 38 FC 4B 21
SNMPv2-SMI::mib-2.17.4.3.1.1.0.4.77.242.2.64 = Hex-STRING: 00 04 4D F2 02 40
SNMPv2-SMI::mib-2.17.4.3.1.1.0.7.233.10.164.121 = Hex-STRING: 00 07 E9 0A A4 79
SNMPv2-SMI::mib-2.17.4.3.1.1.0.7.233.10.202.138 = Hex-STRING: 00 07 E9 0A CA 8A
SNMPv2-SMI::mib-2.17.4.3.1.1.0.9.151.63.37.97 = Hex-STRING: 00 09 97 3F 25 61
SNMPv2-SMI::mib-2.17.4.3.1.1.0.11.95.49.250.193 = Hex-STRING: 00 0B 5F 31 FA C1
для циски
списко вланов
snmpwalk -On -OQ -v2c -c $com $ipsw .1.3.6.1.4.1.9.9.46.1.3.1.1.2|
snmpwalk -On -OQ -v2c -c $com@$vlan $ipsw .1.3.6.1.2.1.17.4.3.1.1|
ну и дальше в том духе
получает на раз польностью всю апр таблицу
open(SNMP,"snmpwalk -On -OQ -v2c -c $com $ipsw .1.3.6.1.4.1.9.9.46.1.3.1.1.2|")
or die "Can't run snmpwalk";
while (<SNMP>)
{
chomp;
s@.1.3.6.1.4.1.9.9.46.1.3.1.1.2.1.@@;
s@ @@g;
my ($vlan, $operation) = split /=/;
if ($operation == 1)
{
push @vlan_table, $vlan;
}
}
close(SNMP);
foreach $vlan ( @vlan_table )
{
open(SNMP,"snmpwalk -On -OQ -v2c -c $com@$vlan $ipsw .1.3.6.1.2.1.17.4.3.1.1|")
or die "Can't run snmpwalk";
while (<SNMP>)
{
chomp;
s@.1.3.6.1.2.1.17.4.3.1.1@@;
my ($oid, $mac) = split /=\s*/;
$_=$mac;
s@"@@g;s@\s*$@@; s@ @:@g; #"
s@(.)@\l\1@g;
$mac_table{$_}=$oid;
}
close(SNMP);
на скоруюю руку и не полностью
но вроде для прмера ясно
а еще маленький нюанс - версия смнп играет роль и лучше миб передавать в явном виде а не вструктуре