如何编写Cisco IOS脚本以在每天的特定时间运行一组命令?

时间:2014-01-30 10:45:48

标签: scripting tcl cisco-ios

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

1 个答案:

答案 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。