이 문서에서는 네트워크 관리자가 정의한 대로 명령 시퀀스를 실행할 수 있는 고유한 단일 EEM 스크립트를 만드는 방법에 대해 설명합니다.
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
이 문서의 정보는 IOS XE 17.18.2 릴리스를 실행하는 Cisco Catalyst 9600X Series Switch(CS-C9600X)를 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
관리자는 원하는 명령 시퀀스가 포함된 일반 텍스트 파일을 생성합니다. 그러면 EEM 스크립트는 지정된 트리거에 따라 이 파일을 호출하고 텍스트 파일에 나열된 모든 명령을 실행합니다.
구문:
tclsh
puts [open "flash:COMMANDS_TO_EXECUTE.txt" w+] {
Enter Commands to Execute
}
exit
컨피그레이션 예시:
인터페이스 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#
플래시에서 파일을 확인합니다.
C9600-Silicon1-SVL#dir flash:
Directory of flash:/
357117 -rw- 101 Jan 25 2026 21:37:09 +05:30 COMMANDS_TO_EXECUTE.txt
COMMANDS_TO_EXECUTE.txt의 내용
configure terminal
interface fiftyGigE 1/1/0/3
shutdown
end
show run interface fiftyGigE 1/1/0/3
이 파일은 TCL 스크립팅을 통해 생성되거나 FTP, TFTP 또는 RCP를 사용하여 전송될 수 있습니다. 네트워크 관리자가 요구하는 명령 시퀀스를 포함하려면 필요에 따라 파일을 편집해야 합니다.
이 EEM 애플릿은 지정된 파일 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
++ 관리자 애플릿 Cisco_Live 권한 부여 우회:
이벤트 관리자 애플릿-이름: 지정된 이름('Cisco_Live')으로 EEM 애플릿을 등록합니다.
권한 부여 우회: 애플릿을 지정하는 선택적 키워드는 AAA 권한 부여를 우회해야 합니다.
++ 이벤트 없음 maxrun 1000:
이벤트 없음: EEM 정책이 'none' 이벤트 탐지기에 등록되도록 지정합니다. 즉, 정책은 자동 이벤트에 의해 트리거되지 않지만 수동으로 실행되어야 합니다.
Maxrun 1000: 이 선택적 매개 변수는 애플릿 또는 정책의 최대 런타임을 1000초로 설정합니다. 지정하지 않으면 기본 최대 런타임은 20초입니다.
++ 작업 020 cli 명령 용어 exec 프롬프트 타임스탬프:
작업 020: EEM 스크립트 내의 작업에 대한 레이블 또는 시퀀스 식별자입니다.
term exec prompt timestamp는 현재 터미널 세션의 프롬프트에 대한 타임스탬프를 활성화하는 CLI 명령입니다.
이 기능은 실행된 각 명령에 대한 시간 참조를 제공하여 문제 해결 및 감사에 도움이 됩니다.
타임스탬프는 명령의 출력 앞에 나타나므로 이벤트 및 명령 실행과 특정 시간의 상관관계를 쉽게 파악할 수 있습니다.
++ 작업 030 cli 명령 용어 exec 프롬프트를 확장합니다.
exec prompt expand라는 용어는 현재 터미널 세션에 대해 확장된 프롬프트 모드를 활성화합니다.
그리고 터미널이 잘림이나 약어 없이 전체 프롬프트를 표시하도록 구성합니다.
명확성 또는 구문 분석을 위해 전체 프롬프트 컨텍스트가 필요한 스크립트 또는 문제 해결 시나리오에 도움이 됩니다.
이 명령은 현재 터미널 세션에만 영향을 미치며 세션이 종료된 후에도 유지되지 않습니다.
++ action 040 file open fileout1 flash:OUTPUT.txt a+:
파일 열기: 파일을 여는 작업을 지정합니다.
파일 출력1: 열린 파일을 참조하기 위해 스크립트 내에서 사용되는 파일 설명자 또는 핸들 이름입니다.
Flash:OUTPUT.txt: 파일이 있거나 생성될 플래시 파일 시스템의 경로 및 파일 이름입니다.
a+: 이는 파일 액세스 모드입니다. 즉, 파일을 읽고 추가하기 위해 파일이 열립니다. 파일이 없으면 새로 만들어집니다. 파일에 기록된 데이터는 기존 콘텐츠를 자르지 않고 끝에 추가됩니다.
++ 작업 050 파일 열기 파일in1 flash:COMMANDS_TO_EXECUTE.txt r:
파일1: 열린 파일을 참조하기 위해 스크립트 내에서 사용되는 파일 설명자 또는 핸들 이름입니다.
플래시:COMMANDS_TO_EXECUTE.txt: 파일이 있는 플래시 파일 시스템의 경로 및 파일 이름입니다.
r: 이는 파일 액세스 모드입니다. 즉, 파일이 읽기 전용으로 열립니다.
++ 작업 060 파일 읽기 파일in1 입력:
파일 읽기: 파일에서 읽을 작업을 지정합니다.
파일1: 파일을 열 때 할당된 파일 설명자 또는 핸들입니다(예: action 050 file open filein1. Flash:COMMANDS_TO_EXECUTE.txt r).
입력: 이 이름은 후속 스크립트 작업에 사용할 읽기 데이터를 저장할 변수 이름입니다.
++ $input '\n'에 대한 070 작업:
Foreach: 이 명령은 문자열에 대한 이터레이션을 지정합니다.
줄: 각 반복 중에 각 토큰(줄)을 보유할 반복기 변수입니다.
$input: 여러 줄 또는 항목을 포함하는 입력 문자열 변수입니다.
'\n': 입력 문자열을 토큰으로 분할하는 데 사용되는 구분 기호이며, 이 경우 줄바꿈 문자입니다.
각 행은 토큰이며 이 경우 \n은 분할자입니다.
++ 080 cli 명령 $line:
Cli 명령: 디바이스에서 CLI 명령을 실행하도록 지정합니다.
$line: 실행할 CLI 명령 문자열을 포함하는 변수입니다. 따옴표는 전체 문자열이 단일 명령으로 처리되도록 보장합니다.
++ 090 파일 쓰기 fileout1 '$_cli_result':
파일 쓰기: 파일에 데이터를 쓰는 EEM 명령입니다.
파일 출력1: 이전에 file open fileout1 flash:OUTPUT.txt a+와 같은 명령으로 열었던 파일 처리기는 데이터가 기록되는 파일을 나타냅니다.
'$_cli_result': 파일에 쓸 CLI 명령 출력 또는 문자열 데이터를 포함하는 변수입니다. 따옴표는 전체 내용이 단일 문자열로 처리되도록 보장합니다.
이 명령은 일반적으로 CLI 명령을 실행하고 $_cli_result의 출력을 캡처한 후 스크립트에서 해당 출력을 디바이스의 플래시 스토리지에 있는 파일에 기록하거나 보관할 수 있도록 하는 데 사용됩니다.
++ 작업 100 종료:
종료: if, else 또는 while과 같은 조건부 블록의 끝을 나타내는 키워드입니다.
++ 작업 120 파일 닫기 filein1:
파일 닫기: 파일 설명자를 닫는 작업.
파일1: 닫을 파일 설명자의 식별자로, 스크립트에서 이전에 열어야 합니다.
EEM 스크립트를 수동으로 트리거하려면
C9600-Silicon1-SVL#event manager run Cisco_Live
이 예에서는 EEM 스크립트가 수동으로 트리거됩니다. 스크립트는 네트워크 요구 사항에 따라 어떤 트리거도 가질 수 있습니다.
출력 파일을 보면 실행된 명령과 그 결과가 표시됩니다.
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
명령 시퀀스에 따라 인터페이스 FiftyGigE1/1/0/3이 성공적으로 종료됩니다.
이 문서에서는 텍스트 파일에 저장된 명령 시퀀스를 실행할 수 있는 유연한 단일 EEM 스크립트를 생성하기 위해 TCL 스크립팅과 Cisco의 EEM을 결합하는 방법을 시연했습니다. 이 접근 방식을 통해 네트워크 관리자는 명령 시퀀스를 외부에서 정의하고 실행을 자동 또는 수동으로 트리거할 수 있으므로 Cisco IOS XE를 실행하는 Cisco Catalyst 스위치에서 자동화 및 운영 효율성이 향상됩니다.
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
1.0 |
17-Apr-2026
|
최초 릴리스 |