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 |