场景描述:
用户有200多台Linux系统服务器,服务器之间不允许免密登录,同时需要执行查看配置或上传脚本文件或执行命令,每次ssh都需要输密码,非常麻烦且工作量巨大,容易出错。
解决办法:
expect工具,能够代替人工实现与终端的交互。
应用场景
1.根据预定标准回答其问题,回答是或否,或将控制权交还给您
2.远程连接设备并执行自动化操作
3.主要是一些需要人机交互的地方,如果提前知道应该输入什么指令都可以使用expect
脚本实例:
需要提前安装expect工具
此脚本执行时,会判断expect是否安装,如果未安装会自动退出,需要输入一次密码,后面主机就不用再输入了
#!/bin/bash
expect1=$(rpm -qa | grep -i expect)
expect2=${expect1:0:6}
if [ -z "$expect2" ];then
echo "expect is not installed,please install expect."
exit
else
read -s -t 60 -p "Please input Host Passwd:" password1
for i in {40..200}
do
/usr/bin/expect<<-END
set timeout 2
spawn ssh 66.66.66.$i hostname&&date
expect {
"(yes/no)?"
{ send "yes\r" }
}
expect {
"*password:"
{ send "$password1\r" }
}
expect EOF
exit
END
done
fi