Имею кучку свичей HP Procurve 2848,3500
Хочу выяснить соответствие MAC=PORT на них. Делаю путем опроса SNMP
snmpwalk -v2c -c public switch1.mydomain 1.3.6.1.2.1.17.7.1.2.2.1.2
В данном виде получаю кучку строк вида
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.27.120.236.125.187 = INTEGER: 36
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.29.96.154.226.97 = INTEGER: 6
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.30.11.7.132.102 = INTEGER: 30
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.30.11.234.50.104 = INTEGER: 49
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.30.11.234.209.106 = INTEGER: 49
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.30.11.234.225.144 = INTEGER: 49
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.30.103.80.144.161 = INTEGER: 292
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.31.41.235.36.67 = INTEGER: 49
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.2.0.33.90.221.183.59 = INTEGER: 49
После фильтрации (отброс ненужного, dec2hex, выделение порта)
snmpwalk -v2c -c public switch1.mydomain 1.3.6.1.2.1.17.7.1.2.2.1.2 | sed "s/\./ /g; s/SNMPv2-SMI::mib-2 17 7 1 2 2 1 2 //g ; s/ = INTEGER://g" | awk '{printf "MAC:%02X%02X%02X%02X%02X%02X Port %02d\n",$2,$3,$4,$5,$6,$7,$8}'
Получаю вот такой список
MAC:001B78EC7DBB Port 36
MAC:001D609AE261 Port 06
MAC:001E0B078466 Port 30
MAC:001E0BEA3268 Port 49
MAC:001E0BEAD16A Port 49
MAC:001E0BEAE190 Port 49
MAC:001E675090A1 Port 292
MAC:001F29EB2443 Port 49
MAC:00215ADDB73B Port 49
Свич имеет 48 обычных порта, + 4 10GbE для связи с другими свичами (не знаю как называются они правильно 2x10GbE-GEN, 2x10GbE-CX4 )
Все бы ничего, пока порты идут >= 48. Когда порты идут >48 (то это как раз эти 4 дополнительных (в свиче они обозначаются как А1-А4)). И если продолжать обычную нумерацию то 49,50,51,51. С этим тоже проблем нет, если порт >48, то МАС на другом свиче, идем туда и ищем пока порт не будет <=48.
А вот порты 291, 294, 297.. и прочие, опытным путем установлено,что это транки (Trk1..TrkN).
Но как понять какой именно транк, на каких портах и с какой нумерации они вообще идут - загадка.
Задача решилась. нашел соответствие
snmpwalk -v2c -c public switch1.domain .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifDescr | sed 's/IF-MIB::ifDescr.//;s/STRING: //'