`

ActiveTCL的Expect学习笔记(自动收邮件)

    博客分类:
  • tcl
阅读更多

1.默认高版本的ActiveTCL不包含Expect,安装方法(Expect不能写成expect):

teacup install Expect

 

2.使用Expect写脚本必须要在脚本中包含:

package require Expect

 

3.执行Expect脚本:

tclsh xxx

 

4.在调用exp_send自动发送信息的时候,内容最后使用'\r'或'\n'(若使用'\r\n'或'\n\r'结尾将出现逻辑问题)如:

exp_send "user $username\r"

 

5.调用exp_send_user给自己回显信息的时候,内容最后使用'\n',而不要使用'\r',如:

exp_send_user "could not connect\n"

 

6.正则表达式建议使用大括号包裹(使用引号包裹会无法识别'[]'等),如:

expect -re {^\+ OK [0-9]+ [0-9]+} {send "xxx\r"}

 

7.善于使用exp_sleep,在很多交互过程中,一个命令远端可能进行两次或更多次的数据发送,此时就需要程序执行exp_sleep来等待数据的到来,以便回显,如

exp_sleep 1

 

8.正则捕获返回结果:

expect -re "([0-9]*)([a-zA-Z]*)"

send_user "num is $expect_out(1,string), string is $expect_out(1,string)"

这里[0-9]*表示一个或多个数字,[a-zA-Z]*表示多个字母。()用于分组,他们分别存放在$expect_out(1,string)和$expect_out(2,string)中。

 

9.日志记录log_file,如:

log_file -noappend result.log

 

10.在远端执行的命令不要太长,建议在40个字符内(过长的命令不会在远端执行)

 

11.字符串比较方法如下,'=='只能用于比较整数,比较时字符串常量要使用双引号包裹(使用单引号会异常结果):

set ispv [string equal $expect_out(5,string) "pv"]

 

12.if...else...语句中注意在关键字(if和else)与'{'、'}'之间需要空格,如果缺少就会报错误:

extra characters after close-brace

 

 

推荐读物:

 

通过expect脚本远程批量管理服务器

http://heylinux.com/archives/1043.html

 

expect和autoexpect实现自动交互学习笔记

http://www.xmydlinux.org/201109/607.html

 

$expect_out(buffer)包含send的数据

http://blog.csdn.net/bonny95/article/details/5755541

 

如何捕获expect中spawn进程的返回值:

http://tsecer.blog.163.com/blog/static/150181720129211035494/

 

最后给出一个自动连接pop.126.com服务器的例子:

 

package require Expect

set hostname "pop.126.com"
set username "abc"
set password "xxx"

puts stdout "Connecting to $hostname ."

spawn telnet $hostname 110

expect -re ".*OK.*" {
  exp_send "user $username\r"
}

eof {
  exp_send_user "could not connect\n"
}

expect -re ".*OK.*" {
  exp_send "pass 280755834\r"
}

expect -re ".*OK.*" {
  exp_send "list\r"
}

exp_sleep 1#sleep的目的是回显list命令的返回结果

exp_send "quit\r"

exp_sleep 1#sleep的目的是回显quit命令和服务的返回结果:'quit','+OK core mail'

expect -re ".*OK.*" {
  exp_send_user "quit success\n"
  exp_sleep 3
}
分享到:
评论

相关推荐

    activetcl带Expect包的已安装文件

    通过结合ActiveTcl的强大功能和Expect的自动化能力,开发者可以创建高效且易于维护的系统管理工具。 总的来说,这个压缩包提供了一个集成的环境,允许用户利用Tcl和Expect来编写复杂的自动化脚本,从而提高工作效率...

    expect-5.21 for Windows 附带安装需要的组件ActiveTcl-8.6.12

    在Windows环境下,expect-5.21结合ActiveTcl-8.6.12,不仅能够帮助开发者进行复杂的脚本编写,还能为系统管理员提供自动化维护的强大工具。需要注意的是,由于expect依赖于Tcl,所以在编写expect脚本时,需要熟悉Tcl...

    ActiveTCL8.4.20带expect

    WINDOWS平台EXPECT,可用于ssh登录等交互,找了好久才弄到的。。

    ActiveTcl8.5.17.0.298612-win32 安装expect后的目录文件

    ActiveTcl是Tcl(Tool Command ...了解并熟练掌握这些知识点,你就能有效地利用ActiveTcl 8.5和Expect进行自动化编程和系统管理。同时,不要忘记持续关注更新,因为软件的新版本通常会修复已知问题并引入新特性。

    expect5.43.0和tcl8.4.11.zip

    在IT领域,`expect`和`TCL`是两种重要的脚本工具,它们在自动化任务执行、系统管理和网络通信中发挥着关键作用。`Expect`是建立在`TCL`基础上的一个扩展,专为自动交互式应用程序设计,如SSH、telnet等。` Expect...

    ActiveTcl 8.4 - 8.6

    ActiveTcl是一款由ActiveState公司开发的完整Tcl(Tool Command Language)开发环境,它包含了Tcl语言的解释器、库以及相关工具,为开发者提供了高效、稳定的Tcl编程环境。ActiveTcl支持多种操作系统,包括Windows、...

    activetcl 8.6 wind10

    4. **开发工具集成**:ActiveTcl可以与各种集成开发环境(IDEs)和文本编辑器集成,例如Visual Studio Code、Eclipse等,提供语法高亮、自动完成和调试支持。 5. **性能优化**:ActiveState对Tcl进行了优化,使得...

    ActiveTcl8.5.0.0

    3. **库支持**:ActiveTcl通常包含了丰富的TCL库,如Tk(用于构建图形用户界面)、Expect(自动化交互式程序)等,这些库的集成使得开发者可以直接在ActiveTcl环境中调用,无需额外安装。 4. **跨平台**:虽然提供...

    expect-5.21-for-win.rar

    《使用Expect 5.21 for Windows:自动化Shell交互脚本的利器》 在Windows操作系统环境中,虽然原生不支持Unix-like的shell脚本,但通过工具如Expect,我们可以实现类似的功能,进行命令行程序的自动化交互。Expect...

    ActiveTcl8.4.20.0

    ActiveTcl8.4.20.0是一个重要的软件包,尤其对于那些在语音信号处理、语音识别和语音合成领域工作的专业人士来说。ActiveTcl 是一个全面的 Tcl(Tool Command Language)开发环境,它提供了对Tcl语言的增强支持,...

    activetcl8.5.4.0

    activetcl 关于 tcl tk 脚本资源库 安装程序

    ActiveTcl8.6.4.1

    ActiveTcl8.6.4.1是一款强大的Tcl(Tool Command Language)开发工具,它在Tcl8.6版本的基础上进行了优化和增强,提供了更稳定、高效的性能。Tcl是一种脚本语言,广泛用于软件开发、自动化任务、系统管理以及科学...

    ActiveTcl 8.6.6

    ActiveTcl 8.6.6版本,兼容32位和64位,开发tcl脚本的朋友可拿去

    activetcl8.4.5.0-linux-ix86

    标题“activetcl8.4.5.0-linux-ix86”指的是ActiveTcl的一个特定版本,即8.4.5,专为Linux操作系统中的i386(也称为ix86)架构设计。ActiveTcl是Tcl(Tool Command Language)的一种商业实现,由ActiveState公司开发...

    ActiveTcl8.6.4.1-linux-x86_64.tar.zip

    ActiveTcl的出现使得开发者可以更方便地利用Tcl进行系统管理、自动化任务、应用程序开发等工作。其8.6.4.1版本的发布,不仅包含了对最新特性的支持,还进行了大量的性能优化和稳定性改进,确保了在处理大规模计算...

    ActiveTcl(x86)

    Tcl的核心特点在于它的简洁语法和灵活性,使得它在系统管理、自动化任务、GUI构建、网络编程等多个领域都有广泛的应用。ActiveTcl的发布,旨在为开发者提供一个稳定的、支持多线程的Tcl运行环境,以及一套完整的开发...

    通过tcl安装expect

    在IT领域,`Expect`是一个强大的自动化脚本工具,它允许程序员或系统管理员与命令行接口(CLI)进行交互,特别是在需要输入响应的自动化场景下非常有用,如SSH登录、FTP传输等。`Expect`是基于TCL语言的一个扩展,...

    ActiveTcl-8.5.18.0.298892_64位.rar

    可在ActiveState网站中下载ActiveTcl-8.5版本,但是较慢,在这里下载应该要快一些。该版本是ActiveTcl-8.5.18.0.298892_64位,ActiveTcl-8.5是ActiveTcl-8.4的次发布,能在8.4中使用的Tcl脚本和C代码都能在8.5版中...

    activeTcl8.4-linux版本32位、64位.zip

    《ActiveTcl 8.4在Linux环境下的应用与配置》 ActiveTcl是由Tcl/Tk开发公司ActiveState提供的一款完整的Tcl/Tk开发套件。...通过学习和掌握ActiveTcl,开发者可以轻松构建跨平台的应用程序,进一步提升开发效率。

    ActiveTcl(TCL开发环境)v8.6.8.0官方免费安装版

    ActiveTcl是一款免费TCL开发环境,提供数百预编译模块,并包含许多实用的扩展包,快来下载体验吧。 软件介绍 免费Tcl开发环境,包含许多有用的扩展包。 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都...

Global site tag (gtag.js) - Google Analytics