Expect 在网络管理中发挥着重要作用
2008-11-13 08:29:20 来源:WEB开发网其实并不是这样的;实际上,通过在 cron、回复邮件(mailback)服务器,或者类似的作业控制机制(请参见清单 3)中进行调用,这项工作完全可以实现自动化。
清单 3. 配置自检的自动化
#!/usr/bin/expect
# initialize host, password, ...
package require Expect
set prompt {[00m# }
spawn telnet $host
expect {User: }
send adminr
expect password:
send $passwordr
expect -exact $prompt
send "show running-configr"
expect -exact $prompt
send exitr
这个脚本可以自动地检索路由器的配置信息,即在正确地编写了脚本之后,对其进行监视时不再需要输入密码或者进行干预。
一些常见的混淆
这个示例是典型的 Expect 使用情况,其中有几点值得注意。首先,不存在任何适用于各种情况的解决方案。许多管理员在获得 Expect 时都认为它是一个单独使用的工具,以解决他们当前所碰到的问题。那不是 Expect。Expect 与电子铁钉寻找器 (electronic stud finder) 不同,后者可以不依靠任何其他工具、独立地查找铁钉。Expect 更像是一个手钻:您必须将其与合适的钻头,或者转换接头、孔锯,或者其他附件进行组合,才能真正实现它的用途。
同样地,Expect 至少需要进行一些自定义工作。当然,我通常使用 Expect 来解决一些其他工具所无法轻松解决的问题。running-config 的案例说明了,只需要几行内容,Expect 就可以自动地获得大量的信息。即使是这个简单的示例,也呈现出 Expect 所带来的一些问题。例如,这种特定的自动化,需要将管理密码以明文的形式嵌入到 Expect 脚本中;您需要判断,它是否适合于您的具体环境。
更多精彩
赞助商链接