如何推动 fping.exe(或其他适用于 Windows 的 ping)在第一次回复时终止?

如何推动 fping.exe(或其他适用于 Windows 的 ping)在第一次回复时终止?

想要使用任意数量的 ICMP 请求对特定主机进行 ping 操作,但还希望 ping 程序在第一次回复时终止(加速脚本)。内置的 Windows ping 和一些我测试过的其他程序都没有这样的功能。有人知道具有此功能的 Windows ping 程序吗?我知道我可以使用“-n 1”参数循环 ping 程序,但这会导致每次循环运行时都启动 ping 程序,如果使用量很大,可能会导致不必要的系统负载。

答案1

您可以在 PowerShell 中执行类似的事情,它将Test-Connectioncmdlet 作为 ping 的包装器。

 param(
     [string]$Name = "8.8.8.8",
     [int]$count = 4
 )

 [bool]$Success = $false

 For ($i=0; $i -le $count; $i++) {

     $result = Test-Connection -ComputerName $Name -Count 1 -ErrorAction SilentlyContinue
     if ($result.StatusCode -eq 0)
     {
          $Success = $true
          $result 
          break;
     }
 }

 Write-Output "Successful connection: $Success"

测试连接总是使用单个 ping,并且我在其周围放置一个循环,一旦 ping 成功,我们就会跳出循环,理想情况下是在第一次 ping 之后,否则它会尝试 x 次,如 $count 中所指定。

PowerShell 没有启动 ping.exe 可执行文件,它使用底层的网络 API,因此在负载下可能会表现得更好一些。

答案2

检查-n 范围

-n Count :指定发送的 Echo Request 消息的数量。默认值为 4。

ping.exe -n 1应该只发送一个 Echo Request 消息

如果您希望加快速度,您可能还需要检查其他参数,特别是该timeout参数。

相关内容