Estou acostumado aos mundos Juniper e Extreme mais do que a Cisco. Sou capaz de me dar bem, mas surgem alguns problemas básicos do cli que finalmente me frustraram o suficiente.
Dentro de um Cisco ASA 5505/5510 executando 8.3+ ou um roteador Cisco 2901 executando 15.2.
Tecnicamente, com o IOS 15.2, a resposta é "sim, você pode saber qual interface está configurando", mas reconhecidamente minha solução envolve uma correção de desagradável desagradável.
Vou demonstrar como usar o EEM versão 3.2 para imprimir o nome da interface que você configurou pela última vez. Não pretendo que esta solução seja perfeita, mas faz o trabalho.
Exemplo :
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#
Neste ponto, minha resposta está mais próxima do código de prova de conceito, que possui várias advertências ...
- O log de interface ocorre mesmo após sair do submodo de configuração da interface; assim, você será lembrado sobre qual interface você configurou recentemente, desde que ainda esteja em qualquer modo de configuração do Cisco IOS. A política do EEM se silencia após sair do modo de configuração com
end
- mas não captura a saída cntl-z
nesse momento.
- O EEM configura o roteador para armazenar variáveis de estado do script (ie
$_user_intf
e $_config_mode
). Isso significa que você recebe %SYS-5-CONFIG_I
mensagens syslog toda vez que o script muda de estado (o que é bastante irritante se você estiver no console). Tecnicamente, você pode colar uma política do ESM para silenciar as mensagens do syslog do EEM, mas isso apenas aumenta o trabalho que você está fazendo para resolver esse problema ...
Encontre a configuração para imprimir a última interface configurada abaixo ... Preciso dar crédito a Ivan Pepelnjak por seu 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