expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect自动交互流程:
spawn启动指定进程>>expect获取指定关键字>>send向指定程序发送指定字符---执行完成退出.
注意该脚本能够执行的前提是已经安装了expect
yum install -y expect
expect常用命令:
spawn 交互程序开始后面跟命令或者指定程序
expect 获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send 用于发送指定的字符串信息
exp_continue 在expect中多次匹配就需要用到
send_user 用来打印输出 相当于shell中的echo
exit 退出expect脚本
eof expect执行结束 退出
set 定义变量
puts 输出变量
set timeout 设置超时时间
interact 可以在命令执行完成后依然保持登陆在远程服务器上,可以直接手工敲命令进行交互,
完成后续工作,最后需要exit退出ssh远程登陆。
示例:
1.ssh登录远程主机并保持登陆状态,执行方法 expect 1.sh 或者 ./1.sh
# vim 1.sh
#!/usr/bin/expect
set password mima
spawn ssh root@172.26.17.89
expect "password:"
send "$password\n"
interact