我正在尝试编写一个tcl脚本,该脚本每天早上都会删除和取消注册路由器中的某些策略,但是当我尝试将其上传到设备时它无法正常工作。 这是我到目前为止所做的事情;
::cisco::eem::event_register_timer cron name crontimer2 cron_entry $_cron_entry
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
exec "en"
exec "cd RuBAN"
exec "delete syslogsyslog_fresh_install.tcl"
exec "delete syslogsyslog_fresh_install.cfg"
exec "delete marvin_fresh_installMarvinfieldst.tcl"
exec "conf t"
exec "no ev m p syslogsyslog_fresh_install.tcl"
exec "no ev m p marvin_fresh_installMarvinfieldst.tcl"
我写的命令中我的tcl脚本错了吗?任何人都可以对此有所了解,我们将不胜感激
答案 0 :(得分:1)
this manual中的一个示例显示使用action_syslog
命令记录事件。您可以尝试用这样的电话替换所有exec
,并查看是否有消息记录?也就是说,你的脚本甚至可以运行吗?此外,当脚本的运行时间过去时,系统级别上当前是否记录了任何内容(如关于脚本执行失败的通知或诸如此类的内容)?
如果脚本运行,那么我建议将所有exec
括在catch
命令中以捕获可能的错误并记录它们,如下所示:
::cisco::eem::event_register_timer cron name crontimer2 cron_entry $_cron_entry
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
set code [catch {
exec "en"
exec "cd RuBAN"
exec "delete syslogsyslog_fresh_install.tcl"
exec "delete syslogsyslog_fresh_install.cfg"
exec "delete marvin_fresh_installMarvinfieldst.tcl"
exec "conf t"
exec "no ev m p syslogsyslog_fresh_install.tcl"
exec "no ev m p marvin_fresh_installMarvinfieldst.tcl"
} res]
if {$code != 0} {
action_syslog priority error msg $res
}
# OK, the commands in the `catch`ed block went well...
请注意,我对Cisco IOS没有任何经验,所以我在考虑在“常规”平台(如POSIX和Windows)上运行Tcl。