显然 MacOsping有一个-o选项,意思是“收到第一个成功响应后返回”或类似的东西。请参阅:https ://stackoverflow.com/a/6119327/4561887 。
Linux Ubuntu 上有等效的吗?我们怎样才能最好地达到同样的结果?
我的版本是ping utility, iputils-s20161105,由返回的ping -V。
更新:我在这里找到了 MacOs 文档: https: //ss64.com/osx/ping.html
Run Code Online (Sandbox Code Playgroud)-o Exit successfully after receiving one reply packet.
ping -c 1 ping_address
ping -c 1 192.168.1.68 #example
Run Code Online (Sandbox Code Playgroud)
c参数用于计算数据包,因此您只需要1这就是原因 -->-c 1
运行命令后,可以通过该命令查看其退出状态$?。使用 ping 后,您应该看到0(成功,OK)。否则,您在输入后得到1或,则表示出现错误。2$?
echo:1 received, 0% packet loss -> (Success echo $? #returns 0
0 received, 100% packet loss -> (Failure)echo $? #returns 1
Run Code Online (Sandbox Code Playgroud)
while ! ping -c1 -W1 192.168.1.68; :;done
Run Code Online (Sandbox Code Playgroud)
!退出状态退出 :-W1等待1秒将其复制到一个名为的文件中pingo
#!/usr/bin/bash
while ! ping -c1 -W1 "$1"; do
: && echo "NOT ALIVE"
done
Run Code Online (Sandbox Code Playgroud)
:是 Null 命令或无效果,该命令不执行任何操作或退出状态始终成功,在这种情况下,类似于键入 true。是 Bourne Shell 内置的吗$1代表第一个命令行参数,在本例中是一个数字IP 地址。例如,将用指定的 IP 地址pingo 192.168.1.68替换$1 。”创建一个名为bin的文件夹。在该文件夹中,创建一个名为pingo的文件,并允许该文件作为程序执行。
mkdir ~/bin # make directory at /home/user/bin
cd ~/bin # change to /home/user/bin directory
touch pingo # create file pingo copy the above command and save it
chmod +x pingo # give permission to execute
Run Code Online (Sandbox Code Playgroud)
/home/user/bin文件夹是您自己的程序的默认位置,可以从任何地方在终端中执行该程序,就像“ping”命令一样。就是这样,现在您可以pingo使用任何地址运行,就像ping -o.
这使得可以使用退出代码来查看主机是否处于活动状态。