Quiero escribir un script en Perl que inicie sesión en los conmutadores Cisco a través de telnet y analice la salida de show mac-address-table
. El problema es que diferentes interruptores me muestran un diseño de campo diferente.
El WS-C3548-XL muestra los campos en el orden
Destination Address Address Type VLAN Destination Port
mientras que el C2960 lo muestra como
Vlan Mac Address Type Ports
¿Hay alguna manera de decirle a show que imprima los campos en un orden predefinido?
Respuesta1
Sondee los dispositivos usando SNMP. Creo que las MIB son iguales, pero con Cisco nunca se sabe.
Respuesta2
No, que yo sepa, no.
Pero como ya estás usando Perl, simplemente revisa la primera línea. A partir de ahí, sabrás cuáles son los significados de los campos particulares y completarás tu hash (¡espero que estés usando uno!) en consecuencia. Esto tiene la ventaja adicional de que en el futuro podrá admitir otros modelos con otro formato de salida. Sin dejar de apoyar a los "viejos". Programación robusta.
...Ah, y asegúrate de manejar el espacio en "Tipo de dirección" :)
Respuesta3
¿Ha pensado en crear scripts usando SNMP? Puede ejecutar utilidades externas snmpget/snmpwalk y analizar la salida o usar el módulo Net::SNMP.
Respuesta4
SNMP sería lo mejor. Pero recuerde también que el modificador de salida "incluir" admite expresiones regulares. Podrías simplemente tomar la información que deseas si quieres seguir con Perl-espera