相当于 Linux 上的“ping -o”

Gab*_*les 2 linux ping

显然 MacOsping有一个-o选项,意思是“收到第一个成功响应后返回”或类似的东西。请参阅:https ://stackoverflow.com/a/6119327/4561887 。

Linux Ubuntu 上有等效的吗?我们怎样才能最好地达到同样的结果?

我的版本是ping utility, iputils-s20161105,由返回的ping -V

更新:我在这里找到了 MacOs 文档: https: //ss64.com/osx/ping.html

-o         Exit successfully after receiving one reply packet.
Run Code Online (Sandbox Code Playgroud)

Ale*_*xel 5

使用 ping:
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$?

PING 输出返回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 循环中。

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目录

创建一个名为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.

来自 PING 手册:
  • 如果 ping根本没有 收到 任何回复数据包,它将退出并显示代码 1
  • 如果同时指定了数据包计数截止时间,并且在截止时间到达时收到的数据包数量少于 count 个数据包,则它也将以代码 1退出。如果出现其他错误,则退出并显示代码 2。示例:
    • 计数 1 并等待 2 秒,但没有任何内容到达第 2 秒,然后错误退出
  • 否则,它将以代码 0退出。[ 好的 ]

这使得可以使用退出代码来查看主机是否处于活动状态