-1

我正在尝试编写一个 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 脚本是否错误?任何人都可以对此有所了解,将不胜感激

4

1 回答 1

1

本手册中的一个示例显示了使用action_syslog命令记录事件。您能否尝试exec用这样的电话替换您的所有 s 并查看是否记录了一条消息?也就是说,您的脚本甚至可以运行吗?此外,当脚本的运行时间过去时,当前是否在系统级别上记录了任何内容(例如有关脚本执行失败的通知或诸如此类的通知)?

如果脚本运行,那么我建议将所有execs 包含在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。

于 2014-01-30T11:25:57.213 回答