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