我正在尝试创建一个脚本,A)循环浏览IP列表并对其进行ping操作,如果成功尝试使用已知凭据登录,如果成功,则将主机添加到列表中以便操作不重复
如果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
答案 0 :(得分:1)
我不完全确定问题是什么,但看起来你的ssh
命令可能正在从你的STDIN
循环中吃掉while read
。
尝试更改read
命令正在读取的FD:
while read -u 9 -r p ; do
echo "$p"
done 9< /iprange.txt
或者尝试使用-n
参数ssh
从STDIN
重定向/dev/null
(阻止从STDIN
读取/iprange.txt
)。