小毛毛初拥expect

 

前几天在写脚本的时候我有一个功能是想切换用户,让他自动输入密码。实现交互式的登陆。发现了expect这个工具。但是从来没有用过,所以也是出了很多问题。今天就来总结下!希望以后同样是新手的朋友不再走弯路。

 

1.             首先确认expect的包要安装成功


我用的centos6.5 yum 安装的。

wKiom1XfC1Sjce8AAAA4r9UKhsA398.jpg


2.查看expect的路径,可以用


wKiom1XfC2DCTdNoAAAqzLQ0Nms920.jpg

 

3.确定脚本有可执行权限

 

      chmod +x expect.sh

 

 

#!/usr/bin/expect     这个路径就是which查看的路径。

set timeout 10                                这个是等待超时时间10秒钟

set  user  root                                  设置用户变量。变量名:user  变量值:root

set   ip    "192.168.1.129"                设置变量。变量名字为“ip”    变量值为192.168.1.129

set passwd "123456."                      设置密码变量。

spawn ssh     –l  $user    $ip            spawnexpect的内置命令,用来执行命令    

expect   "password:"                         expect也是expect这个软件的内置变量。用来抓取字段

send "$passwd\r"                             输入密码。 温馨提示:命令字符串结尾别忘记加上“/r”

interact                                              如果要在远程执行操作,这个必须要注意。执行完成后保持交互状态,而不是退出远程终端。~         

 

4.另外需要注意的是:

不能按照习惯来用sh expect.sh来这行expect的程序,会提示找不到命令,如下:


wKioL1XfDYuy_0SGAACQuFz_mu8333.jpg

 

因为expect用的不是bash所以会报错。执行的时候直接./expect.sh就可以了。~切记