expect作为交互式工具,可以在命令或程序执行时,已交互的形式输入执行字符,实现自动化交互通信。
可将expect看作是另一种shell,只不过expect有特有的语法
语法:
spawn执行命令或程序--expect获取匹配的关键字--send发送指定字符进行交互--退出
expxct工具需要提前安装,执行yum -y install expect
场景:需要与多个服务器建立链接后进行操作
#!/usr/bin/expect
set ipaddress "xxx.xxx.xxx.xxx"
set passwd "password"
set name "name"
set timeout 30 #设置超时时间
spawn ssh -p port $name@$ipaddress #交互程序开始后面跟命令或者指定程序
expect {
"yes/no" {send "yesr";exp_continue} #获取匹配的关键字并对应发送
"password" {send "$passwdr"} #r为回车必须要加
}
interact #保持交互状态
expect eof #expect执行结束 退出
场景:批量修改过期密码
#!/bin/bash
for i in `cat hostip.txt`
do
/usr/bin/expect << EOF
spawn /usr/bin/ssh root@$i
expect {
"UNIX password" { send "oldr" }
}
expect {
"New password:" { send "new#r" }
}
expect {
"Retype new password:" { send "newr" }
}
expect "*]#"
send "echo new|passwd --stdin rootr"
expect "*]#"
send "exitr"
expect eof
EOF
done



