文章目录
前言:
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语法分为:单一分支模式语法、多分支模式语法
- ① 单一分支模式语法: