In questo documento viene descritto un metodo per creare uno script EEM univoco e singolo in grado di eseguire qualsiasi sequenza di comandi definita da un amministratore di rete.
Cisco raccomanda la conoscenza dei seguenti argomenti:
Per la stesura del documento, sono stati usati switch Cisco Catalyst serie 9600X (CS-C9600X) con software IOS XE 17.18.2.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
L'amministratore crea un file di testo normale contenente la sequenza di comandi desiderata. Lo script EEM chiama quindi questo file su un trigger specificato ed esegue tutti i comandi elencati nel file di testo.
Sintassi:
tclsh
puts [open "flash:COMMANDS_TO_EXECUTE.txt" w+] {
Enter Commands to Execute
}
exit
Esempio di configurazione:
Per creare una sequenza di comandi che chiudano l'interfaccia FiftyGigE1/1/0/3:
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#
Verificare il file nella memoria flash:
C9600-Silicon1-SVL#dir flash:
Directory of flash:/
357117 -rw- 101 Jan 25 2026 21:37:09 +05:30 COMMANDS_TO_EXECUTE.txt
Contenuto di COMMANDS_TO_EXECUTE.txt
configure terminal
interface fiftyGigE 1/1/0/3
shutdown
end
show run interface fiftyGigE 1/1/0/3
Questo file può essere creato tramite script TCL o trasferito tramite FTP, TFTP o RCP. Il file deve essere modificato in base alle esigenze per includere qualsiasi sequenza di comandi richiesta dall'amministratore di rete.
Questa applet EEM esegue tutti i comandi dal file specificato COMMANDS_TO_EXECUTE.
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 per la gestione degli eventi Cisco_Live bypass autorizzazioni:
Nome applet gestione eventi: Registra un'applet EEM con il nome specificato ('Cisco_Live' in questo caso).
Bypass autorizzazione: Le parole chiave opzionali che specificano l'applet devono ignorare l'autorizzazione AAA.
Evento + none maxrun 1000:
Evento nessuno: In questo modo si specifica che il criterio EEM è registrato con il rilevatore eventi 'none', ovvero non viene attivato da alcun evento automatico ma deve essere eseguito manualmente.
Maxrun 1000: Questo parametro facoltativo imposta su 1000 secondi il tempo di esecuzione massimo per l'applet o il criterio. Se non viene specificato, il runtime massimo predefinito è 20 secondi.
++ azione 020 cli termine exec prompt timestamp:
Azione 020: Etichetta o identificatore di sequenza per l'azione nello script EEM.
term exec prompt timestamp è un comando CLI che abilita timestamp sul prompt nella sessione corrente del terminale.
Questa funzione facilita la risoluzione dei problemi e il controllo fornendo un riferimento temporale per ciascun comando eseguito.
L'indicatore orario viene visualizzato prima dell'output dei comandi, semplificando la correlazione di eventi ed esecuzioni di comandi con orari specifici.
++ action 030 cli termine exec prompt expand:
term exec prompt expand attiva la modalità di prompt espansa per la sessione terminale corrente.
e configura il terminale in modo da visualizzare il prompt completo senza troncamento o abbreviazione.
Aiuta negli script o nella risoluzione di scenari in cui è necessario il contesto del prompt completo per la chiarezza o l'analisi.
Il comando influisce solo sulla sessione terminale corrente e non viene mantenuto al termine della sessione.
++ azione 040 file apri fileout1 flash:OUTPUT.txt a+:
Apertura file: Specifica l'operazione di apertura di un file.
Fileout1: Descrittore di file o nome di handle utilizzato nello script per fare riferimento al file aperto.
Flash:OUTPUT.txt: Si tratta del percorso e del nome del file nel file system flash in cui il file risiede o verrà creato.
a+: Questa è la modalità di accesso al file, che indica che il file è aperto per la lettura e l'aggiunta. Se il file non esiste, verrà creato. I dati scritti nel file verranno aggiunti alla fine senza troncare il contenuto esistente.
++ azione 050 file apri filein1 flash:COMMANDS_TO_EXECUTE.txt r:
Filein1: Descrittore di file o nome di handle utilizzato nello script per fare riferimento al file aperto.
Flash:COMMANDS_TO_EXECUTE.txt: Si tratta del percorso e del nome del file nel file system flash in cui risiede il file.
r: Questa è la modalità di accesso al file, che indica che il file è aperto in sola lettura.
++ azione 060 file letta file in input1:
Lettura file: Specifica l'operazione di lettura da un file.
Filein1: Si tratta del descrittore o dell'handle di file assegnato quando il file è stato aperto, ad esempio con l'azione 050 file aperto in1. Flash:COMMANDS_TO_EXECUTE.txt r.
Ingresso: Nome della variabile in cui verranno archiviati i dati letti per l'utilizzo in azioni di script successive.
++ azione 070 per ogni riga $input '\n':
Foreach: Questo comando specifica un'iterazione su una stringa.
Riga: Variabile iteratore che conterrà ogni token (riga) durante ogni iterazione.
$input: Variabile stringa di input contenente più righe o voci.
'\n': Delimitatore utilizzato per dividere la stringa di input in token, in questo caso il carattere di nuova riga.
Ogni riga è un token e \n in questo caso è la barra di divisione.
++ action 080 cli comando $line:
Comando Cli: Specifica che l'azione consiste nell'eseguire un comando CLI sul dispositivo.
$riga: Variabile contenente la stringa di comando CLI da eseguire. Le virgolette garantiscono che l'intera stringa venga considerata come un unico comando.
++ azione 090 file write fileout1 '$_cli_result':
Scrittura file: Comando EEM per scrivere dati in un file.
Fileout1: Gestore di file precedentemente aperto da un comando come file open fileout1 flash:OUTPUT.txt a+, che rappresenta il file in cui vengono scritti i dati.
'$_cli_result': La variabile che contiene l'output del comando CLI o qualsiasi dato stringa da scrivere nel file. Le virgolette garantiscono che l'intero contenuto venga considerato come una singola stringa.
Questo comando viene in genere utilizzato dopo l'esecuzione dei comandi CLI e l'acquisizione dell'output in $_cli_result, consentendo allo script di registrare o archiviare l'output in un file nella memoria flash del dispositivo.
Fine azione ++ 100:
End: Parola chiave che indica la fine di un blocco condizionale, ad esempio if, else o while.
++ azione 120 file chiudifilein1:
Chiusura file: Operazione di chiusura del descrittore di file.
Filein1: Identificatore del descrittore di file da chiudere, che deve essere stato aperto in precedenza nello script.
Per attivare manualmente lo script EEM:
C9600-Silicon1-SVL#event manager run Cisco_Live
In questo esempio lo script EEM viene attivato manualmente. Lo script può avere qualsiasi trigger in base ai requisiti di rete.
La visualizzazione del file di output mostra i comandi eseguiti e i relativi risultati:
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
L'interfaccia FiftyGigE1/1/0/3 è stata chiusa correttamente dalla sequenza di comandi.
In questo documento viene illustrato come combinare gli script TCL con l'EEM di Cisco per creare uno script EEM singolo e flessibile in grado di eseguire qualsiasi sequenza di comandi archiviata in un file di testo. Questo approccio consente agli amministratori di rete di definire le sequenze di comandi esternamente e di attivarne l'esecuzione automaticamente o manualmente, migliorando l'automazione e l'efficienza operativa sugli switch Cisco Catalyst con Cisco IOS XE.
| Revisione | Data di pubblicazione | Commenti |
|---|---|---|
1.0 |
17-Apr-2026
|
Versione iniziale |