Linux 应答时bash ping ip run命令
我想检查两个IP地址上的ping应答,如果它们都已启动,则执行一个命令 例如:Linux 应答时bash ping ip run命令,linux,bash,scripting,ping,Linux,Bash,Scripting,Ping,我想检查两个IP地址上的ping应答,如果它们都已启动,则执行一个命令 例如: ping 8.8.8.8 on response do ping 8.8.4.4 on response execute command 是否有一个简单的bash脚本来执行此操作?根据: 如果ping根本没有收到任何回复数据包,它将以代码1退出。如果同时指定了数据包计数和截止日期,并且截止日期到达时收到的数据包少于计数,则它也将以代码1退出。在另一个错误中,它以代码2退出。否则它将以代码0退出。这使得可以使用退出
ping 8.8.8.8 on response do
ping 8.8.4.4 on response
execute command
是否有一个简单的bash脚本来执行此操作?根据:
如果ping
根本没有收到任何回复数据包,它将以代码1退出。如果同时指定了数据包计数和截止日期,并且截止日期到达时收到的数据包少于计数,则它也将以代码1退出。在另一个错误中,它以代码2退出。否则它将以代码0退出。这使得可以使用退出代码查看主机是否处于活动状态
因此,您可以依赖退出代码来确定是否在脚本中继续
ping 8.8.8.8 -c 1
if [ $? = 0 ]
then
echo ok
else
echo ng
fi
使用-c1
选项仅尝试ping
一次。可以随意换成任何号码
$?
是上一个命令的退出代码。您可以使用它引用ping的退出代码
根据需要修改上述代码段。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,则主机将被评估为响应。如果不是零,则确定主机不可访问或关闭。我不知道使用什么bash语法在
If
语句中直接使用ping
命令比使用test
:If-ping-c18.8.8;然后
。