como empurrar fping.exe (ou outro ping para windows) para terminar na primeira resposta?

1

Deseja fazer ping de um host específico com um número arbitrário de solicitações ICMP, mas também deseja que o programa ping termine na primeira resposta (script de aceleração). Built-in windows ping e alguns outros que eu testei não tem esse recurso. Alguém sabe programa de ping do windows com essa capacidade? Eu sei que eu posso loop ping programa com o parâmetro "-n 1", mas esta causa para ping programa é iniciado a cada vez que o loop em execução e em caso de uso maciço poderia causar carga do sistema indesejado.

    
por user2956477 14.08.2017 / 10:20

2 respostas

0

Você pode fazer algo assim no PowerShell, que, como o cmdlet Test-Connection , é um wrapper para 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"

Test-Connection sempre usa um único ping, e eu coloco um loop em torno dele, assim que um ping é bem-sucedido, estamos quebrando o loop, idealmente após o primeiro ping, caso contrário tente x vezes, conforme especificado em $ count.

O PowerShell não está iniciando o executável ping.exe, ele usa as APIs de rede abaixo, portanto, ele pode executar um pouco melhor sob carga.

    
por 14.08.2017 / 16:03
0

Verifique o parâmetro -n

-n Count : Specifies the number of Echo Request messages sent. The default is 4.

ping.exe -n 1 deve enviar apenas uma mensagem de solicitação de eco

Se você estiver procurando agilizar as coisas, talvez queira verificar os outros parâmetros também, especificamente o parâmetro timeout .

    
por 14.08.2017 / 16:10