Я хочу написать скрипт perl, который входит в коммутаторы cisco через telnet и анализирует вывод show mac-address-table
. Проблема в том, что разные коммутаторы показывают мне разную компоновку полей.
WS-C3548-XL отображает поля в следующем порядке:
Destination Address Address Type VLAN Destination Port
в то время как C2960 показывает это как
Vlan Mac Address Type Ports
есть ли способ заставить show выводить поля в предопределенном порядке?
решение1
Опросить устройства с помощью SNMP. Я бы подумал, что MIB одинаковы, но с Cisco никогда не знаешь наверняка.
решение2
Нет, насколько мне известно, нет.
Но поскольку вы уже используете perl, просто проверьте первую строку. С этого момента вы знаете, что означают конкретные поля, и заполняете свой хэш (надеюсь, вы его используете!) соответствующим образом. Это имеет дополнительное преимущество, заключающееся в том, что в будущем вы сможете поддерживать другие модели с еще одним форматом вывода. При этом поддерживая «старые». Надежное программирование.
...О, и не забудьте указать пробел в поле «Тип адреса» :)
решение3
Вы когда-нибудь задумывались о написании скриптов с использованием SNMP? Вы можете запустить внешние утилиты snmpget / snmpwalk и проанализировать вывод или использовать модуль Net::SNMP.
решение4
SNMP был бы лучшим. Но также помните, что модификатор вывода "include" поддерживает регулярные выражения. Вы можете просто взять нужную информацию, если хотите, придерживайтесь Perl-expect