expect使用

1、安装   

yum install -y expect

2、使用

1)定义脚本执行的shell

#!/bin/bash

2)set timeout 30

设置超时时间,单位是秒,如果设为timeout -1 意为永不超时

3)spawn

spawn是进入expect环境后才能执行的内部命令,不能直接在默认的shell环境中运行

主要功能:传递交互命令

4)expect

这里的expect同样是expect的内部命令

主要功能:判断输出结果是否包含某项字符串,没有立即返回,否则就等待一段时间后返回,等待时间通过timeout进行设置

5)send

执行交互动作,将交互要执行的动作进行输入给交互指令

6)interact

执行完后保持交互动作,吧控制权交给控制台

如果不加这一项,交互完成后会自动退出

7)exp_continue

继续执行接下来的交互操作

8)$argv

expect脚本可以接受从bash传递过来的参数,可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个。。。参数

3、一台控制

#!/usr/bin/expect
set ipaddress "192.168.1.76"
set passwd "123456"
set timeout 30
spawn ssh root@$ipaddress
expect {
"yes/no" { send "yes
";exp_contine}
"password:" { send "$passwd
"}
}
interact
多台控制
#!/usr/bin/expect set ipaddress [ lindex $argv 0 ] set user [ lindex $argv 1 ] set passwd [ lindex $argv 2 ] set timeout 30 spawn ssh root@$ipaddress expect { "yes/no" { send "yes ";exp_contine} "password:" { send "$passwd "} } interact

cp ssh2.exp /usr/sbin/ssh2

ssh2 192.168.1.76 root 123456

原文地址:https://www.cnblogs.com/wangyong-blog/p/10277035.html