Linux expect

expect 是基于Tcl实现的一个脚本语言,用来实现自动和程序交互式通信。类似自动远程登录命令,模拟人手工交互输入密码的过程,从而实现自动远程登录
expect 的工作流程为:spawn(启动指定进程)—>expect(获取指定关键字)—>send(向指定程序发送指定字符)—>interact(允许用户交互)–>退出结束

安装expect

使用expect的前提需要安装,这里以yum安装为例:

1
yum install -y expect

expect常用命令

spawn

启动一个进程,然后所有的expect都在这个进程中进行

expect

获取匹配信息匹配成功则执行expect后面的程序动作

example:

1
2
3
4
5
6
expect {
“yes/no”
{send “yes\n”;exp_continue}
“*password:”
{send “123456\n”}
}

exp_continue

expect中多次匹配用到,使后面的匹配仍然从第一个关键字开始,否则第一次匹配从第一个关键字开始,但是后面第二次匹配则从第二个关键字开始

send exp_send

用于发送指定的字符串信息

send_user

把参数输出到标准输出中去,默认的send,exp_send命令都是将参数输出到程序中的,相当于shell中的echo

interact

停留在当前进程,退出expect,交给用户操作

exit

退出expect脚本,还可以使用该命令指定退出前的一些命令

example:

1
2
3
4
exit -onexit {
exec rm $tmpfile(删除临时文件)
send_user “Good bye\n”
}

变量

expect变量使用方法和Tcl一致

set

定义变量

1
2
set host localhost
set passwrod 123456

example:接收命令行参数为变量

1
2
set host [lindex $argv 0]
set passwrod [lindex $argv 1]

puts

输出变量

关键字

eof

expect执行结束 退出

timeout

设置全局性的超时时间,默认是10s

1
set timeout 60
分享到: