Eingabeaufforderungen von Cisco IOS cli - Wie können Sie feststellen, welche Schnittstelle Sie konfigurieren?

7

Ich bin mehr an die Welten Juniper und Extreme gewöhnt als an Cisco. Ich komme gut zurecht, aber es treten einige grundlegende Cli-Probleme auf, die mich endlich genug frustriert haben.

In einem Cisco ASA 5505/5510 mit 8.3+ oder einem Cisco 2901-Router mit 15.2.

Gibt es eine Möglichkeit, die IOS-Eingabeaufforderungen so einzurichten, dass Sie wissen, in welcher Schnittstellenkonfiguration Sie sich befinden oder in welchem ​​Untermenü Sie sich befinden? Wenn ich zum Beispiel "interface vlan 1" eingebe, ändert sich dies in (config-if), aber es wäre sicher schön zu wissen, in welchem ​​Untermenü der Schnittstelle ich mich zu diesem Zeitpunkt befinde, damit ich nicht versehentlich etwas ändere die falsche Schnittstelle, als hätte ich versehentlich "interface vlan 2" eingegeben. So etwas wie: (config-if / vlan1) wäre schön.

Oder betrachte ich es einfach aus der falschen Perspektive und es gibt einen guten Grund für die sofortige Syntaxkonvention?

Der Reiniger
quelle

Antworten:

7

AFAIK, die Antwort ist NEIN . Ich habe nie verstanden, wie diese wertvolle Funktion IOS seit so vielen Jahren entgangen ist, oder ich habe mich bemüht, sie nie zu entdecken. ;-);

In einigen Fällen verwende ich die folgende Technik, wenn ich absolut sicher sein möchte, dass ich die Schnittstelle konfiguriere, von der ich glaube, dass ich sie bin. Kommentare (!) Angezeigt. Ich weiß, dass diese Technik für die Netz-Tierärzte langwierig ist, aber sie passt perfekt zu der paranoiden Menge, die manchmal beides ist.

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
quelle
2

IOS-Switches / Router haben keinen Befehl, um anzuzeigen, in welchem ​​Subkonfigurationsmodus Sie sich befinden.

NX-OS hat den whereBefehl.

cpt_fink
quelle
2

Ich bin mehr an die Welten Juniper und Extreme gewöhnt als an Cisco. Ich komme gut zurecht, aber es treten einige grundlegende Cli-Probleme auf, die mich endlich genug frustriert haben.

In einem Cisco ASA 5505/5510 mit 8.3+ oder einem Cisco 2901-Router mit 15.2.

Technisch gesehen lautet die Antwort unter IOS 15.2 "Ja, Sie können wissen, welche Schnittstelle Sie konfigurieren", aber meine Lösung beinhaltet zugegebenermaßen eine ziemlich unangenehme Kludge-Korrektur.

Ich werde zeigen, wie Sie mit EEM Version 3.2 den zuletzt konfigurierten Schnittstellennamen ausdrucken. Ich behaupte nicht, dass diese Lösung perfekt ist, aber sie erledigt den Job.

Beispiel :

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#

An dieser Stelle ist meine Antwort näher am Proof-of-Concept-Code, der mehrere Einschränkungen aufweist ...

  • Die Schnittstellenprotokollierung erfolgt auch nach dem Verlassen des Submodus für die Schnittstellenkonfiguration. Auf diese Weise werden Sie daran erinnert, welche Schnittstelle Sie kürzlich konfiguriert haben, solange Sie sich noch in einem Cisco IOS-Konfigurationsmodus befinden. Die EEM-Richtlinie bringt sich nach dem Beenden des Konfigurationsmodus mit zum Schweigen end- sie wird jedoch cntl-zzu diesem Zeitpunkt nicht über beendet .
  • EEM konfiguriert den Router zum Speichern von Skriptstatusvariablen (dh $_user_intfund $_config_mode). Dies bedeutet, dass Sie %SYS-5-CONFIG_Ijedes Mal Syslog-Nachrichten erhalten, wenn das Skript den Status ändert (was ziemlich ärgerlich ist, wenn Sie sich auf der Konsole befinden). Technisch gesehen könnten Sie eine ESM-Richtlinie einfügen, um die EEM-Syslog-Nachrichten zum Schweigen zu bringen. Dies erhöht jedoch nur die Arbeit, die Sie zur Lösung dieses Problems leisten ...

Die Konfiguration zum Drucken der zuletzt konfigurierten Benutzeroberfläche finden Sie unten ... Ich muss Ivan Pepelnjak für seinen Blog über danken_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
quelle
0

Nein. Sie können den Schnittstellennamen jedoch einfach erneut eingeben, um sicherzustellen, dass Sie sich in der erwarteten Schnittstelle befinden.

Schmiede
quelle