Expect 在网络管理中发挥着重要作用
2008-11-13 08:29:20 来源:WEB开发网当您运行这个脚本时,将看到与清单 5 所示类似的结果。
清单 5. 运行清单 4 所得到的结果
RECEIVED: echo `date`; sleep 1; echo `date`; echo '1 done on 7.'
Mon Apr 23 22:15:15 UTC 2007
Mon Apr 23 22:15:16 UTC 2007
1 done on 7.
RECEIVED: echo `date`; sleep 2; echo `date`; echo '2 done on 6.'
Mon Apr 23 22:15:15 UTC 2007
Mon Apr 23 22:15:17 UTC 2007
2 done on 6.
RECEIVED: echo `date`; sleep 3; echo `date`; echo '3 done on 5.'
Mon Apr 23 22:15:15 UTC 2007
Mon Apr 23 22:15:18 UTC 2007
3 done on 5.
...
RECEIVED: echo `date`; sleep 8; echo `date`; echo '8 done on 0.'
Mon Apr 23 22:15:14 UTC 2007
Mon Apr 23 22:15:22 UTC 2007
8 done on 0.
在编程的层次上,请注意,所有这些登录都是通过基于密码的 ssh 登录到相同的主机,并使用相同的用户和密码凭据。在一个更实际的示例中,可以通过更多行的代码来管理各个不同的主机,对每个主机使用不同的帐号和登录协议。尽管对于那些对网络管理员非常有 价值的命令,sleep 是一个很好的模型;但是没有理由先睡眠数秒钟,然后再返回。
即使这个示例,也无法尽述 Expect 的所有功能。Expect 还提供了使用一个内置的套接字编程接口,直接管理 TCP/IP 对话的功能,并且它可以实现半自动化,在两种不同的模式之间来回切换,用户在其中一种模式中输入部分对话,而 Expect 在另一种模式中实现所有操作的自动化。
我们将在以后的文章中介绍这些主题。本文的目标是,展示 Expect 中包含了大多数管理员并不知道的许多内容,具体来说是了解了该工具后,马上就能够解决网络管理工作中各种常见的问题。在脚本中使用密码和密码条目,以及并发地控制多个连接,这些功能都是非常强大的。
总结
Expect 可以完成所有看起来无法实现自动化的工作:在脚本中使用密码条目、登录到远程用户的会话和返回对他或者她的控制,以及更多的工作。尽管它已经得到了广泛使用,但是 Expect 却常常被人们所误解。正确地理解有关 Expect 的一些基本知识(如何调用它、它的对话模型、它的编程辅助,等等),以便在系统和网络管理工作中更充分地发挥它的作用。
更多精彩
赞助商链接