Dit document beschrijft een methode om een uniek en enkelvoudig EEM-script te maken dat elke reeks opdrachten kan uitvoeren zoals gedefinieerd door een netwerkbeheerder.
Cisco raadt kennis van de volgende onderwerpen aan:
De informatie in dit document is gebaseerd op de Cisco Catalyst 9600X Series Switch (CS-C9600X) met IOS XE 17.18.2 release.
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
De beheerder maakt een platte-tekstbestand met de gewenste opdrachtenreeks. Het EEM-script roept dit bestand vervolgens op een opgegeven trigger en voert alle opdrachten uit die in het tekstbestand worden vermeld.
Syntaxis:
tclsh
puts [open "flash:COMMANDS_TO_EXECUTE.txt" w+] {
Enter Commands to Execute
}
exit
Configuratievoorbeeld:
Om een reeks opdrachten te maken die de interface FiftyGigE1/1/0/3 afsluiten:
C9600-Silicon1-SVL#tclsh
C9600-Silicon1-SVL(tcl)#puts [open "flash:COMMANDS_TO_EXECUTE.txt" w+] {
configure terminal
interface fiftyGigE 1/1/0/3
shutdown
end
show run interface fiftyGigE 1/1/0/3
}
C9600-Silicon1-SVL(tcl)#exit
C9600-Silicon1-SVL#
Controleer het bestand in Flash:
C9600-Silicon1-SVL#dir flash:
Directory of flash:/
357117 -rw- 101 Jan 25 2026 21:37:09 +05:30 COMMANDS_TO_EXECUTE.txt
Inhoud van COMMANDS_TO_EXECUTE.txt
configure terminal
interface fiftyGigE 1/1/0/3
shutdown
end
show run interface fiftyGigE 1/1/0/3
Dit bestand kan worden gemaakt door TCL-scripts of worden overgedragen met behulp van FTP, TFTP of RCP. Het bestand moet worden bewerkt als dat nodig is om een reeks opdrachten op te nemen die door de netwerkbeheerder wordt vereist.
Deze EEM-applet voert alle opdrachten uit het opgegeven bestand COMMANDS_TO_EXECUTE uit.
event manager applet Cisco_Live authorization bypass
event none maxrun 1000
action 010 cli command "enable"
action 020 cli command "term exec prompt timestamp"
action 030 cli command "term exec prompt expand"
action 040 file open fileout1 flash:OUTPUT.txt a+
action 050 file open filein1 flash:COMMANDS_TO_EXECUTE.txt r
action 060 file read filein1 input
action 070 foreach line $input "\n"
action 080 cli command "$line"
action 090 file write fileout1 "$_cli_result"
action 100 end
action 110 file close fileout1
action 120 file close filein1
++ applet voor gebeurtenisbeheer Cisco_Live-autorisatie omzeilen:
Event manager applet-naam: Registreert een EEM applet met de opgegeven naam ('Cisco_Live' in dit geval).
Autorisatie omzeilen: Optionele trefwoorden die de applet specificeren, moeten de AAA-autorisatie omzeilen.
++ Evenement Geen MaxRun 1000:
Gebeurtenisnummer: Dit geeft aan dat het EEM-beleid is geregistreerd bij de gebeurtenisdetector 'none', wat betekent dat het beleid niet wordt geactiveerd door een automatische gebeurtenis, maar bedoeld is om handmatig te worden uitgevoerd.
Maxrun 1000: deze optionele parameter stelt de maximale runtime voor de applet of het beleid in op 1000 seconden. Als dit niet is opgegeven, is de maximale standaardduur 20 seconden.
++ Actie 020 CLI Opdrachtterm EXEC prompt tijdstempel:
Actie 020: Dit is het label of de sequentie-id voor de actie in het EEM-script.
term exec prompt timestamp is een CLI-opdracht die tijdstempels inschakelt op de prompt in de huidige terminalsessie.
Deze functie helpt bij het oplossen en controleren van problemen door een tijdreferentie te geven voor elke uitgevoerde opdracht.
De tijdstempel wordt weergegeven voor de uitvoer van opdrachten, waardoor het gemakkelijker wordt om gebeurtenissen en commando-uitvoeringen te correleren met specifieke tijden.
++ Actie 030 CLI Opdrachtterm EXEC prompt Uitvouwen:
Term exec prompt uitvouwen schakelt de uitgevouwen prompt modus voor de huidige terminal sessie.
En het configureert de terminal om de volledige prompt weer te geven zonder afkorting of afkorting.
Het helpt bij scripts of probleemoplossingsscenario's waarbij de volledige promptcontext nodig is voor duidelijkheid of parseren.
De opdracht heeft alleen invloed op de huidige terminalsessie en blijft niet bestaan nadat de sessie is beëindigd.
++ actie 040 bestand open fileout1 flash: OUTPUT.txt a+:
Bestand openen: Hiermee geeft u de bewerking op om een bestand te openen.
Fileout1: Dit is de bestandsomschrijver of de naam van de handle die in het script wordt gebruikt om naar het geopende bestand te verwijzen.
Flash: OUTPUT.txt: Dit is het pad en de bestandsnaam in het flash-bestandssysteem waarin het bestand zich bevindt of zal worden gemaakt.
a +: Dit is de bestandstoegangsmodus, wat betekent dat het bestand wordt geopend voor lezen en toevoegen. Als het bestand niet bestaat, wordt het gemaakt. Gegevens die naar het bestand zijn geschreven, worden aan het einde toegevoegd zonder bestaande inhoud af te breken.
++ actie 050 bestand openen bestand1 flash: COMMANDS_TO_EXECUTE.txt r:
Bestand1: Dit is de bestandsomschrijver of de naam van de handle die in het script wordt gebruikt om naar het geopende bestand te verwijzen.
Flash: COMMANDS_TO_EXECUTE.txt: Dit is het pad en de bestandsnaam in het flash-bestandssysteem waarin het bestand zich bevindt.
r: Dit is de bestandstoegangsmodus, wat betekent dat het bestand alleen voor lezen wordt geopend.
++ Actie 060 Bestand lezen Bestand1 Invoer:
Lezen van bestand: Hiermee geeft u de bewerking op die u uit een bestand wilt lezen.
Bestand1: Dit is de bestandsdescriptor of -handle die is toegewezen toen het bestand werd geopend (bijvoorbeeld met actie 050 bestand open bestand1. Flash: COMMANDS_TO_EXECUTE.txt (r).
Input: Dit is de naam van de variabele waar de gelezen gegevens worden opgeslagen voor gebruik in volgende scriptacties.
++ actie 070 voor elke regel $input '\n':
Foreach: Deze opdracht geeft een iteratie over een tekenreeks op.
Lijn: Dit is de iteratorvariabele die elke token (lijn) tijdens elke iteratie zal bevatten.
$input: Dit is de variabele voor de invoertekenreeks die meerdere regels of items bevat.
'\n': Dit is het scheidingsteken dat wordt gebruikt om de invoertekenreeks in tokens te splitsen, in dit geval het teken newline.
Elke regel is een token en \n is de splitter in dit geval.
++ Actie 080 CLI Opdracht $line:
Cli-opdracht: geeft aan dat de actie is om een CLI-opdracht op het apparaat uit te voeren.
$line: de variabele die de CLI-opdrachtreeks bevat die moet worden uitgevoerd. De aanhalingstekens zorgen ervoor dat de hele string wordt behandeld als een enkele opdracht.
++ Actie 090 Bestand Schrijven FileOut1 '$_CLI_RESULT':
Bestand schrijven: De opdracht EEM om gegevens naar een bestand te schrijven.
Fileout1: De bestandshandler die eerder is geopend door een opdracht zoals bestand open fileout1 flash:OUTPUT.txt.a+, die het bestand vertegenwoordigt waarnaar gegevens zijn geschreven.
'$_cli_result': de variabele met de CLI-opdrachtuitvoer of de tekenreeksgegevens die naar het bestand moeten worden geschreven. De aanhalingstekens zorgen ervoor dat de volledige inhoud als één tekenreeks wordt behandeld.
Deze opdracht wordt meestal gebruikt na het uitvoeren van CLI-opdrachten en het vastleggen van hun uitvoer in $_cli_result, waardoor het script de uitvoer naar een bestand op de flashopslag van het apparaat kan loggen of archiveren.
++ actie 100 einde:
Einde: Het trefwoord dat het einde van een voorwaardelijk blok aangeeft, zoals als, else of while.
++ Actie 120 Bestand sluiten Bestand1:
Bestand sluiten: de bewerking om de bestandsdescriptor te sluiten.
File1: De identifier van de file descriptor die gesloten moet zijn, die eerder in het script geopend moet zijn.
Zo activeert u het EEM-script handmatig:
C9600-Silicon1-SVL#event manager run Cisco_Live
In dit voorbeeld wordt het EEM-script handmatig geactiveerd. Het script kan elke trigger hebben volgens de netwerkvereisten.
Als u het uitvoerbestand bekijkt, worden de uitgevoerde opdrachten en de resultaten weergegeven:
C9600-Silicon1-SVL#more flash:OUTPUT.txt
Enter configuration commands, one per line. End with CNTL/Z.
C9600-Silicon1-SVL(config)#
C9600-Silicon1-SVL(config-if)#
C9600-Silicon1-SVL(config-if)#
C9600-Silicon1-SVL#Load for five secs: 0%/0%; one minute: 1%; five minutes: 1%
No time source, *22:01:35.406 IST Sun Jan 25 2026
------------------ show running-config interface FiftyGigE1/1/0/3 ------------------
Building configuration...
Current configuration : 127 bytes
!
interface FiftyGigE1/1/0/3
description To-Host3-Ten 1/1/3
switchport access vlan 10
switchport mode access
shutdown
end
De interface FiftyGigE1/1/0/3 is succesvol afgesloten volgens de opdrachtvolgorde.
Dit document laat zien hoe je TCL-scripting en de EEM van Cisco kunt combineren om een flexibel, enkelvoudig EEM-script te maken dat in staat is om elke reeks opdrachten uit te voeren die in een tekstbestand zijn opgeslagen. De aanpak stelt netwerkbeheerders in staat om opdrachtreeksen extern te definiëren en hun uitvoering automatisch of handmatig te activeren, waardoor de automatisering en operationele efficiëntie op Cisco Catalyst-switches met Cisco IOS XE wordt verbeterd.
| Revisie | Publicatiedatum | Opmerkingen |
|---|---|---|
1.0 |
17-Apr-2026
|
Eerste vrijgave |