Indicaciones de Cisco IOS cli: ¿alguna forma de saber qué interfaz está configurando?

7

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.

¿Hay alguna manera de configurar las indicaciones de IOS para que sepa en qué configuración de interfaz se encuentra o en qué submenú se encuentra? Por ejemplo, si escribo "interface vlan 1", cambiará a (config-if), pero seguro que sería bueno poder saber en qué submenú de interfaz estoy en ese punto de esa manera, no cambio accidentalmente algo en la interfaz incorrecta, como si hubiera escrito accidentalmente "interface vlan 2". Algo como: (config-if / vlan1) sería bueno.

¿O simplemente lo estoy mirando desde una perspectiva incorrecta y hay una buena razón para la convención de sintaxis inmediata tal como está?

El limpiador
fuente

Respuestas:

7

AFAIK, la respuesta es NO . Nunca entendí cómo esta valiosa característica se ha escapado de iOS por tantos años o me las arreglé para nunca descubrirla. ;-)

Utilizo la siguiente técnica en algunos casos cuando quiero estar absolutamente seguro de que estoy configurando la interfaz que creo que soy. Comentarios (!) Mostrados. Sé que esta técnica es larga para los veterinarios netos, pero encaja perfectamente con la multitud paranoica que a veces es 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>
generalnetworkerror
fuente
2

Los conmutadores / enrutadores IOS no tienen un comando para mostrar en qué modo de subconfiguración se encuentra.

NX-OS tiene el wherecomando.

cpt_fink
fuente
2

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-zde este punto.
  • EEM configura el enrutador para almacenar variables de estado de script (es decir, $_user_intfy $_config_mode). Esto significa que recibe %SYS-5-CONFIG_Imensajes 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
Mike Pennington
fuente
0

No. Sin embargo, simplemente puede ingresar el nombre de la interfaz nuevamente para asegurarse de estar en la interfaz esperada.

Smithers
fuente