我正在尝试创建一个脚本,它将A)循环通过IP的列表,如果成功尝试使用已知凭据登录,并且如果成功,则将主机添加到列表中,以便这些操作不会重复。
如果A)主机不可用于ping或B)如果主机可用且我的已知凭据有效,则此脚本将按预期运行。如果它可以ping主机,但ssh连接被拒绝,则脚本退出,而不是使用下一个变量(或IP)。谢谢!
到目前为止,我所拥有的:
while read p; do
ping -c1 -t1 $p
if [ $? -eq 0 ]
then
/usr/local/bin/sshpass -p $PW ssh -o StrictHostKeyChecking=no "$USR"@"$p" </dev/null "
scutil --get ComputerName" | tee -ai $WORKING
MACHINE=$(head -n 1 $WORKING)
if grep -Fxq $MACHINE "$FULL"
then
echo $MACHINE has been worked on already
else
echo $MACHINE has not been worked on
echo $MACHINE >> $FULL
rm -rf $WORKING
fi
else
echo ping fail
fi
done </iprange.txt发布于 2017-04-21 22:41:33
我不完全确定问题是什么,但看起来您的ssh命令可能正在从您的while read循环中吃掉您的STDIN。
或者尝试更改您的read命令正在读取的FD:
while read -u 9 -r p ; do
echo "$p"
done 9< /iprange.txt或者尝试使用ssh命令的-n参数,该命令从/dev/null重定向STDIN (阻止从/iprange.txt读取您的STDIN )。
https://stackoverflow.com/questions/43542917
复制相似问题