为了在顺序范围内自动执行shutdown
多个no shutdown
接口的操作,最好不要完全使用 EEM,而是结合使用 EEM 和 TCL 脚本(EEM 用于监视事件并触发 TCL 脚本的启动)。
首先,您需要创建您的 TCL 脚本并将其存储在设备的 flash 或 bootflash 分区中。您想要执行的单个脚本(没有暂停)的示例可能类似于:
for {set i 0} {$i <= 9} {incr i} {
set var Tunnel
append var $i
exec "interface $var"
exec "shutdown"
exec "no shutdown"}
然后,您可以根据需要创建您的 EEM 小程序,第一个操作行是您的“启用”命令,下一个是启动您刚刚创建的 TCL 脚本的调用。例如:
event syslog pattern "(Tunnel[0-9]) is down: retry limit exceeded"
action 1.0 “enable”
action 1.5 cli command "tclsh flash:shut_no-shut_tunnels.tcl"
如果您想在shutdown
andno shutdown
命令之间暂停 360 秒,您可以轻松地将脚本拆分为 2 个脚本(一个 to shutdown
,另一个 to no shutdown
)。例如:
关闭:
for {set i 0} {$i <= 9} {incr i} {
set var Tunnel
append var $i
exec "interface $var"
exec "shutdown"}
不关机:
for {set i 0} {$i <= 9} {incr i} {
set var Tunnel
append var $i
exec "interface $var"
exec "no shutdown"}
只需相应地命名文件并根据需要在 EEM 小程序中的单独操作中引用它们,例如:
action 1.5 cli command "tclsh flash:shut_tunnels.tcl"
action 2.0 wait 360
action 2.5 cli command "tclsh flash:no-shut_tunnels.tcl"
如果您坚持只使用 EEM,您可以使用一些变量来提取您寻找的信息。使用该命令show event manager detector syslog detailed
将显示 TCL 和 EEM 小程序格式/语法中可用变量的列表。
因此,您可以结合使用正则表达式和这些变量来处理此任务。
执行此操作的此类 EEM 小程序的示例可能是:
event manager applet interface_Shutdown
event syslog pattern "(Tunnel[0-9]) is down: retry limit exceeded"
action 1.0 regexp "(Tunnel[0-9]) is down: retry limit exceeded" "$_syslog_msg" match intf
action 1.5 cli command "enable"
action 2.0 cli command "configure terminal"
action 2.5 cli command "interface $intf"
action 3.0 cli command "shutdown"
action 3.5 wait 360
action 4.0 cli command "no shutdown"
action 4.5 cli command "end"
注意:我还没有测试过 EEM 小程序以查看它是否正常工作。这只是一个例子。