Linux 自动化运维之expect

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

expect自动交互流程:

spawn启动指定进程---expect获取指定关键字---send向指定程序发送指定字符---执行完成退出.

注意该脚本能够执行的前提是安装了expect

yum install  expect -y,安装完毕后,通过whereis命令可以看到expect安装在了  /usr/bin/expect.

这个expect的作用接近bash解释器的,在脚本内需要写明expect的路径。那么,还是写一个脚本做示例吧。

该脚本为免交互ssh登录到192.168..0.16,以root用户登录。

#!/usr/bin/expect
set ip 192.168.0.19#这个是你想要连接的那个主机的IP
set user root
set passwd #想要远程连接的那个主机的root密码
spawn ssh $user@$ip
expect {
"(yes/no)?" { send "yes\r"; exp_continue }
"*assword:" { send "$passwd\r" }
}
interact

执行方式为    ./脚本名称   ,脚本需要可执行权限。

第二种执行方式: expect 脚本名称 , 脚本不需要可执行权限