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-z
zu diesem Zeitpunkt nicht über beendet .
- EEM konfiguriert den Router zum Speichern von Skriptstatusvariablen (dh
$_user_intf
und $_config_mode
). Dies bedeutet, dass Sie %SYS-5-CONFIG_I
jedes 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