Estoy acostumbrado a los mundos Juniper y Extreme más que Cisco. Puedo pasar bien, pero surgen algunos problemas básicos de cli que finalmente me han frustrado lo suficiente.
Dentro de un Cisco ASA 5505/5510 con 8.3+ o un enrutador Cisco 2901 con 15.2.
Técnicamente con IOS 15.2, la respuesta es "sí, puedes saber qué interfaz estás configurando", pero es cierto que mi solución implica una corrección de kludge bastante desagradable.
Demostraré cómo usar EEM versión 3.2 para imprimir el nombre de la interfaz que configuró por última vez. No pretendo que esta solución sea perfecta, pero hace el trabajo.
Ejemplo :
DEN-EDGE-02#sh ver | i IOS
Cisco IOS Software, 2800 Software (C2800NM-ADVENTERPRISEK9-M), Version 15.1(4)M7, RELEASE
SOFTWARE (fc2)
DEN-EDGE-02#
DEN-EDGE-02#conf t
Enter configuration commands, one per line. End with CNTL/Z.
DEN-EDGE-02(config)#username cisco password cisco
DEN-EDGE-02(config)#
DEN-EDGE-02(config)#interface Fa0/0
Last interface configured was: FastEthernet0/0
DEN-EDGE-02(config-if)#no ip proxy-arp
Last interface configured was: FastEthernet0/0
DEN-EDGE-02(config-if)#interface lo0
Last interface configured was: Loopback0
DEN-EDGE-02(config-if)#ip address 1.1.1.1 255.255.255.255
Last interface configured was: Loopback0
DEN-EDGE-02(config-if)#exit
Last interface configured was: Loopback0
DEN-EDGE-02(config)#
DEN-EDGE-02(config)#username cisco password cisco
Last interface configured was: Loopback0
DEN-EDGE-02(config)#end
DEN-EDGE-02#
DEN-EDGE-02#sh ver | i IOS
Cisco IOS Software, 2800 Software (C2800NM-ADVENTERPRISEK9-M), Version 15.1(4)M7, RELEASE
SOFTWARE (fc2)
DEN-EDGE-02#
En este punto, mi respuesta está más cerca del código de prueba de concepto, que tiene varias advertencias ...
- El registro de la interfaz ocurre incluso después de salir del submodo de configuración de la interfaz; por lo tanto, se le recordará qué interfaz configuró recientemente siempre que esté en cualquier modo de configuración de Cisco IOS. La política EEM se silencia a sí misma después de salir del modo de configuración con
end
, pero no captura la salida a través cntl-z
de este punto.
- EEM configura el enrutador para almacenar variables de estado de script (es decir,
$_user_intf
y $_config_mode
). Esto significa que recibe %SYS-5-CONFIG_I
mensajes de syslog cada vez que el script cambia de estado (lo cual es bastante molesto si está en la consola). Técnicamente, podría pegar una política de ESM para silenciar los mensajes de registro del sistema EEM, pero eso solo aumenta el trabajo que está haciendo para resolver este problema ...
Encuentre la configuración para imprimir la última interfaz configurada a continuación ... Necesito darle crédito a Ivan Pepelnjak por su blog sobre_exit_status
! Reset to defaults...
no event manager applet IntfCliLog
no event manager environment _user_intf
no event manager environment _config_mode
!
event manager environment _user_intf _None_
event manager environment _config_mode 1
event manager applet IntfCliLog
event cli pattern ".*" sync yes
action 010 set match "_None_"
action 020 regexp "^(configure t)" $_cli_msg match
action 030 comment !! Set _config_mode upon entering config mode
action 040 if $match ne "_None_"
action 050 cli command "enable"
action 060 cli command "configure t"
action 070 cli command "event manager environment _config_mode 1"
action 080 cli command "end"
action 090 end
action 100 set match "_None_"
action 110 regexp "^(end)" $_cli_msg match
action 120 comment !! clear variables upon exit from config mode
action 130 if $match ne "_None_"
action 140 cli command "enable"
action 150 cli command "configure t"
action 160 cli command "event manager environment _config_mode 0"
action 170 cli command "event manager environment _user_intf _None_"
action 180 cli command "end"
action 190 end
action 200 comment !! Parse any "interface" commands
action 210 set intfName "_None_"
action 220 regexp "^interface *(.*)" $_cli_msg match intfName
action 230 if $intfName ne "_None_"
action 240 cli command "enable"
action 250 cli command "configure t"
action 260 cli command "event manager environment _user_intf $intfName"
action 270 cli command "end"
action 280 end
action 290 comment !! Log the last interface configured
action 300 if $_config_mode eq 1
action 340 if $_user_intf ne "_None_"
action 350 puts "Last interface configured was: $_user_intf"
action 360 end
action 370 end
action 380 comment !! Set _exit_status 1 to run commands with "event cli ... sync yes"
action 390 set _exit_status 1
action 400 exit