我想检查两个IP地址上的ping回复,如果它们都是up,那么我执行一个命令。
例如:
ping 8.8.8.8 on response do
ping 8.8.4.4 on response
execute command
是否有一个简单的bash脚本来执行此操作?
答案 0 :(得分:2)
如果
ping
根本没有收到任何回复数据包,它将以代码1退出。如果指定了数据包计数和截止时间,并且截止日期到达时收到的数据包数少于也将以代码1退出。在其他错误上它以代码2退出。否则它以代码0退出。这使得可以使用退出代码来查看主机是否存活。
因此,您可以依赖退出代码来确定是否在脚本中继续。
答案 1 :(得分:1)
ping 8.8.8.8 -c 1
if [ $? = 0 ]
then
echo ok
else
echo ng
fi
使用ping
选项仅尝试-c 1
一次。根据需要更改为任意数字。
$?
是上一个命令的退出代码。你可以用它来引用ping
的退出代码。
将上述代码段修改为您想要的内容。
答案 2 :(得分:0)
尝试点击不存在的网站:
eric@dev ~ $ ping -c 1 does_not_exist.com > /dev/null 2>&1; echo $?
2
尝试点击确实存在的网站:
eric@dev /var/www/sandbox/eric $ ping -c 1 google.com > /dev/null 2>&1; echo $?
0
如果返回0,则评估主机是否响应。如果不是零,则确定主机无法访问或关闭。