文章目录
前言:
expect是一款自动化的脚本解释型的工具。
expect基于tcl脚本,expect脚本的运行需要tcl的支持。
expect对一些需要交互输入的命令很有帮助,比如ssh ftp scp telnet。
远程登录linux服务器的时候,ssh命令需要手工输入密码,当登录多台机器的时候就会非常繁琐。
expect就可以根据设定的规则,自动帮我们输入密码,大大节省了时间。
一、Expect 基本命令
1.1 Expect 流程命令
- ① send 命令:向进程发送字符串,用于模拟用户的输入,且该命令不能自动回车换行,一般需要加\r(回车)
- ② expect命令:一个内部命令,判断上次输出结果里是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回。此外,只能捕捉由spawn启动的进程的输出
- ③ spawn命令:启动进程,并且跟踪后续交互信息
- ④ interact命令:执行完成后保持交互交互状态,把控制权交给控制台
1.2 Expect 内容命令
- ① timeout命令:指定超时时间,过期则继续执行后续指令,单位是:秒。timeout -1表示永不超时。默认情况下,timeout是10秒
- ② exp_continue命令:允许expect继续向下执行指令
- ③ send_user命令:回显命令,相当于echo
1.3 Expect 其他命令
- ① $argv 参数数组:expect脚本可以接受从bash传递的参数,可以使用[lindex $argv n] 获得,n从0开始,分别表示第一个、第二个、第三个……参数
- arg :参数
- argv[]:value,存放各参数
- argc:外部命令,参数个数
- ② expect脚本必须以interact或者expect eof结束,执行自动化任务通常expect eof就足够了
- ③ expect eof是在等待结束标志,由spawn启动的命令在结束时会产生一个eof标记,expect epf即在等待这个标记
二、Expect的执行方式
2.1 Expect语法
- Expect语法分为:单一分支模式语法、多分支模式语法
- ① 单一分支模式语法:
#匹配到password后,会输出mypassword\r
expect "password:"

本文介绍了Expect工具的基础知识,包括基本命令如send、expect、spawn和interact,以及如何设置超时和回显。通过示例展示了如何使用Expect进行SSH免交互登录,从而简化多台服务器的管理。最后,文章强调了Expect在自动化工作中的价值,并提到Python在自动化领域的广泛应用。
最低0.47元/天 解锁文章
3377

被折叠的 条评论
为什么被折叠?



