#!/bin/bash
Auto_SSH() ###ssh连接函数,达到免输入自动连接功能
{
/usr/bin/expect <<-EOF ###在sh环境下调用expect环境
spawn ssh root@$1 hostname ###执行指令
expect {
"yes/no" { send "yes\r" ; exp_continue }
"password" { send "westos\r" }
}
expect eof
EOF
}
for IP in {1..10} ##循环调用自动ssh连接函数,使自动尝试连接主机
do
ping -c1 -w1 172.25.254.$IP &> /dev/null
if [ "$?" = "0" ] ##退出值为0说明上一个命令执行正常
then
Auto_SSH 172.25.254.$IP | tail -n 1 ###如果可以ping通,就执行函数,并输出hostname结果第一行
fi
done
这个脚本是有前提的,即密码都统一为westos。这里我们将范围扩大到了12,因为主机IP正好为12。【用虚拟机进行实验】