Linux中expect自动交互脚本的使用

最近在一台物理机上同时运行64个虚拟机进行测试,但每台虚拟机的操作都是一样的,所以用脚本来操作会方便很多,但唯一的问题就是要自动登录64台虚拟机后再进行操作,利用expect能解决这个问题。

expect是用来进行自动化控制和测试的工具,在Ubuntu14的安装方法是:

# apt-get install expect


expect常用命令:

spawn:spawn命令用来启动新的进程(由spawn启动的进程的输出才可以被expect所捕获)。

expect:从进程接收字符串,通常等待进程的反馈。expect可以接收一个字符串参数,也可以接收正则表达式参数。

send:将expect 命令接受的后的与期望字符串匹配,若对应则执行相应的send命令来发送交互信息。

interact :执行完成后保持交互状态, 这时可以手动输入信息 。

expect eof :进程结束符。


一个例子:

#!/usr/bin/expect -f 
set ip [lindex $argv 0 ]   #接收第一个参数,并设置IP 
set password [lindex $argv 1 ] #接收第二个参数,并设置密码 
set timeout 10     #设置超时时间 
spawn ssh root@$ip  #发送ssh请滶 
expect {     #返回信息匹配 
 "*yes/no" { send "yes\r"; exp_continue} #第一次ssh连接会提示yes/no,继续 
 "*password:" { send "$password\r" }  #出现密码提示,发送密码 
} 
interact   #交互模式,用户会停留在远程服务器上面.





猜你喜欢

转载自blog.csdn.net/yzy1103203312/article/details/79222673
今日推荐