O Cisco IOS cli solicita - alguma maneira de saber qual interface você está configurando?


7

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.

Existe uma maneira de configurar os prompts do IOS para que você saiba em qual configuração da interface você está ou em qual submenu você está? Por exemplo, se eu digitar "interface vlan 1", ele mudará para (config-if), mas com certeza seria bom saber em qual submenu de interface estou nesse ponto, dessa maneira, não altero acidentalmente algo a interface errada, como se eu tivesse digitado acidentalmente "interface vlan 2". Algo como: (config-if / vlan1) seria bom.

Ou estou simplesmente olhando da perspectiva errada e há uma boa razão para a convenção de sintaxe imediata como está?

Respostas:


7

AFAIK, a resposta é NÃO . Eu nunca entendi como esse recurso valioso escapou do IOS por tantos anos ou tentei nunca descobri-lo. ;-)

Uso a seguinte técnica em alguns casos, quando quero ter certeza absoluta de que estou configurando a interface que acho que sou. Comentários (!) Mostrados. Eu sei que essa técnica é muito complicada para os veterinários, mas se encaixa perfeitamente com a multidão paranóica que às vezes é ambas.

conf t
do sh run int g1/1
! Look over int config and note description
int g1/1
 desc GiveMeThisInterfaceOrGiveMeDeath
 do sh run int g1/1
 !Confirm the int you think you're inside configuring is the one intended
 <config-if commands here>

2

Os comutadores / roteadores IOS não têm um comando para mostrar em que modo de subconfiguração você está.

O NX-OS possui o wherecomando


2

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-znesse momento.
  • O EEM configura o roteador para armazenar variáveis ​​de estado do script (ie $_user_intfe $_config_mode). Isso significa que você recebe %SYS-5-CONFIG_Imensagens 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

0

Não. No entanto, você pode simplesmente inserir o nome da interface novamente para garantir que está na interface esperada.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.