bash ping ip run命令回复

时间:2013-12-09 13:25:32

标签: linux bash scripting ping

我想检查两个IP地址上的ping回复,如果它们都是up,那么我执行一个命令。

例如:

ping 8.8.8.8 on response do
ping 8.8.4.4 on response 
execute command

是否有一个简单的bash脚本来执行此操作?

3 个答案:

答案 0 :(得分:2)

根据manpage on ping

  

如果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)

Bash命令在主机启动时返回yes或no。

尝试点击不存在的网站:

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,则评估主机是否响应。如果不是零,则确定主机无法访问或关闭。