expect是基于Tcl实现的一个脚本语言,用来实现自动和程序交互式通信。类似自动远程登录命令,模拟人手工交互输入密码的过程,从而实现自动远程登录expect的工作流程为:spawn(启动指定进程)—>expect(获取指定关键字)—>send(向指定程序发送指定字符)—>interact(允许用户交互)–>退出结束
安装expect
使用expect的前提需要安装,这里以yum安装为例:
1 | yum install -y expect |
expect常用命令
spawn
启动一个进程,然后所有的expect都在这个进程中进行
expect
获取匹配信息匹配成功则执行expect后面的程序动作
example:
1 | expect { |
exp_continue
在expect中多次匹配用到,使后面的匹配仍然从第一个关键字开始,否则第一次匹配从第一个关键字开始,但是后面第二次匹配则从第二个关键字开始
send exp_send
用于发送指定的字符串信息
send_user
把参数输出到标准输出中去,默认的send,exp_send命令都是将参数输出到程序中的,相当于shell中的echo
interact
停留在当前进程,退出expect,交给用户操作
exit
退出expect脚本,还可以使用该命令指定退出前的一些命令
example:
1 | exit -onexit { |
变量
expect变量使用方法和Tcl一致
set
定义变量
1 | set host localhost |
example:接收命令行参数为变量
1 | set host [lindex $argv 0] |
puts
输出变量
关键字
eof
expect执行结束 退出
timeout
设置全局性的超时时间,默认是10s
1 | set timeout 60 |