我想编写一个 perl 脚本,通过 telnet 登录到 cisco 交换机并解析 的输出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,你可以直接获取你想要的信息