OID — .1.3.6.1.2.1.17.7.1.2.2.1.2
Пример запроса и ответа:
$ snmpwalk -v 2c -c public -OnQ 192.168.1.13 .1.3.6.1.2.1.17.7.1.2.2.1.2 | head .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.12.41.60.129.58 = 29 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.21.93.15.135.0 = 38 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.21.93.15.135.3 = 38 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.21.93.15.135.4 = 38 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.22.62.23.213.41 = 11 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.22.62.76.224.134 = 11 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.37.144.2.76.76 = 30 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.37.144.2.76.118 = 27 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.37.144.2.76.248 = 25 .1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.37.144.2.77.152 = 17
Пример перлятины для разбора:
#!/usr/bin/perl
$format =
"vlan = %u mac = " . join( ":", map { "%02x" } 1 .. 6 ) . " port = %u\n";
while (
( $oid, $port ) = split(/(?<=\S)\s*=\s*(?=\S)/);
$port || die "Invalid line: '$_'\n";
printf( $format, ( split( /\./, $oid ) )[ 14 .. 20 ], $port );
}[/code]
Ну и готовый пример
[code]$ echo -e ".1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.37.144.2.76.118 = 27\n.1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.37.144.2.76.248 = 25" | ./mac.pl
vlan = 2 mac = 00:25:90:02:4c:76 port = 27
vlan = 2 mac = 00:25:90:02:4c:f8 port = 25[/code]
И да, vlan и порт у кого-то это влан и порт, а у кого-то индекс влана и индекс порта во внутреннем представлении железки. Смотрите доку вашего вендора.
Ошень мало! Надо больше про SNMP!!!))))
Что конкретно интересует? Тут узкая проблема, которая бывает не часто, но когда возникает начинаешь вспоминать «что вроде сделать можно, но как именно — сходу не понятно» и ее решение. Все остальное в SNMP более менее очевидно (во всяком случае из того, с чем я сталкивался).