【发布时间】:2013-01-29 13:47:06
【问题描述】:
我基本上想要以下内容:
#full .co.uk/.com domain names are kept in /var/www/vhosts
for each in /var/www/vhosts
do
echo "Attempting to ping $each"
ping -c 1 $each
if [ $? comes back with an IP ]; then
echo "The web server for $each is responding. $each points to $IPADDRESS"
domainlist=`echo "$each points to $IPADDRESS" >> domaintoiplist.txt`
echo ""
else
echo "Host $each is not reachable!"
fi
done
我无法工作的一点是 ping 无论如何都会返回 0 的退出状态。我需要来自Ping function having undesirable results的解决方案吗
【问题讨论】:
-
我想
/var/www/vhosts是一个包含www.example.com之类的文件夹的文件夹? -
你如何测试 $?。假设 vhost 包含有意义的数据,代码对我来说看起来不错
-
@MichelFeldheim 是的,但没有 www。在 DavideBerra 我试过:“$?” -ne "0" , $? -ne 0 , "$?" -eq "0" 和 $? -eq 0 。问题是当我运行它时,即使我创建了 NonExistantDomain.com,因为 ping 成功返回/退出,它从不使用回显“主机 $each 无法访问!”行。
-
[$? -eq 0 ] 是正确的。并且 ping 会在失败时返回一个非零值——但是你提供给它的很多看起来很傻的东西实际上会在某个地方找到可以连接的东西。 (我尝试了 xxxxxxxxxxxxxxxxx.com 并找到了服务器。另一方面,您的 NonExistantDomain.com 没有,至少不是来自这里。)
标签: bash if-statement for-loop ping