我正在编写一个 bash 脚本来更改所有 fortigate 的密码。我必须选择所有 IP 公用设备,并且我必须测试连接是好是坏。通过下面的命令,我知道我的 ssh 连接返回了一些错误,0=connection is good。
sshpass -p [PASSWORD] ssh -q -oStrictHostKeyChecking=no [USERNAME]@[LOCAL_IP] > /dev/null
现在我想把它放在我的脚本中来测试所有的 ssh 连接并将它放在邮件中。但是当我将命令放在我的 while 循环中时,循环只运行一次(完全工作而无需测试 ssh 连接)
if [ "$?" == "0" ]
then
echo "(./forti.sh) | sshpass -p $p ssh -oStrictHostKeyChecking=no $u@$IP" >> $base/change_password.sh
./change_password.sh
echo "<td id="rouge"></td>" >> pass_mail.html
rm $base/change_password.sh
else
echo "<td id="rouge"></td>" >> pass_mail.html
rm $base/change_password.sh
fi
所以这是我的脚本块,它在fortigate启动时验证条件,正如我在while循环运行一次之前所说的那样,即使它是真的。
你知道我的问题吗?
如果不够清楚,请随时询问详细信息。
谢谢。