Posso medir o tempo do PING entre dois outros computadores?

1

Estou investigando uma questão crucial no campo. Normalmente, não há largura de banda suficiente para o meu aplicativo ser rápido. Normalmente, o modo como funciona, é que eu peço para o Terminal (via VNC ou WebEx) na máquina do usuário, em seguida, aumente a janela de comando e execute o PING no servidor para ver a latência.

Este procedimento consome muito tempo (por exemplo, às vezes as pessoas nem estão em sua mesa, etc ...).

Existe uma maneira de executar o PING remotamente da máquina do usuário para o servidor sem envolver o usuário?

Ou existe uma alternativa melhor?

    
por AngryHacker 10.01.2013 / 23:03

4 respostas

1

Existe um programa que usei chamado Desktop Central Free . Ele permite que você se conecte ao prompt de comando de um computador remoto e execute o que quiser. Enquanto a máquina estiver ativa, essa ferramenta pode ajudar bastante. Ele também tem muitas outras opções / ferramentas que você pode fazer de computadores remotos sem envolver outras entradas do usuário.

    
por 10.01.2013 / 23:15
1

Se a máquina do usuário tiver um endereço IP público (não está atrás do NAT), você poderá fazer o ping da máquina dele no servidor.

    
por 10.01.2013 / 23:25
1

Eu prefiro o Teste de Conexão do PowerShell

Test-Connection computerperformance.co.uk 

Source        Destination     IPV4Address      Bytes    Time(ms) 
------        -----------     -----------      -----    -------- 
WIN7          computerperf... 72.26.108.9      32       148      
WIN7          computerperf... 72.26.108.9      32       149      
WIN7          computerperf... 72.26.108.9      32       149      
WIN7          computerperf... 72.26.108.9      32       149    

Naturalmente, você pode usar um ComputerName em vez de um website. Eu sugiro esta solução porque dá o tempo, daí a capacidade de medir a latência.

    
por 10.01.2013 / 23:31
0

Não tenho certeza se o OP foi respondido, então vou enviar o que desenvolvi depois de procurar sem sucesso a mesma resposta.

Eu uso duas abordagens diferentes para isso, para testar as conexões entre os servidores Exchange e o servidor que será designado em um argumento New-MailboxExportRequest -FilePath.

#invoke-command (test-connection)
function Get-TestConnectionResponseTime
{
#returns a hash of min, max, avg ping times
param($Pingee,$Pinger)
$TCScript="
    '$result = Test-Connection $Pingee
    '$min=('$result|Measure-Object -Minimum -Property responsetime).Minimum
    '$max=('$result|Measure-Object -Maximum -Property responsetime).Maximum
    '$avg=('$result|Measure-Object -Average -Property responsetime).Average
    @{Min='$min;Max='$max;Avg='$avg}
    "

$CxtScript = $ExecutionContext.InvokeCommand.NewScriptBlock($TCScript)
try{
    Invoke-Command -ComputerName $Pinger -ScriptBlock $CxtScript -ErrorAction Stop}
catch [System.Management.Automation.RuntimeException]{
    return "Probably a firewall restriction: " + $error[0].FullyQualifiedErrorId}
catch{
    return "From catch-all error trap: " + $error[0].FullyQualifiedErrorId}
}

#start-process (psexec -> ping)
function Get-PingResponseTime
{
#uses start-process to run ping from remote to remote, returns a hash of min, max, avg ping times

# this one is slow and clunky, but psexec is allowed though some of the firewalls I contend with, 
# and invoke-command isn't. To collect the output in the script, I had to write it to a log and 
# pick it up afterwards (by watching for the last line of the output to appear in the log file)

param($Pingee,$Pinger)
$argumentlist = "$Pinger ping $Pingee"
$timestamp = Get-Date
$psexecID = Start-Process -FilePath psexec -ArgumentList ("\" + $argumentlist) -NoNewWindow -RedirectStandardOutput \MyComputer\c$\temp\pinglog.txt -PassThru #-Wait
Write-Host "Started process" $psexecID.Name
#wait for the remote process to finish
While(Get-Process -ComputerName $Pinger | ?{$_.Name -eq $psexecID.Name}){
    Write-Host "." -NoNewline 
    }
#wait for the completed log file on my local system
Write-Host "Waiting for $pinger to return results..."
while(!((Get-Content C:\temp\pinglog.txt) -match "Average = ")){
    Write-Host "." -NoNewline
    Start-Sleep -Seconds 1
    }
Write-Host " ah, there they are!"
#parse the ping output
$pingtimes = ((Get-Content C:\temp\pinglog.txt) -match "Average = ").trim() -split ", " | %{($_ -split " = ")[1].trim("ms")}
return @{Min=$pingtimes[0];Max=$pingtimes[1];Avg=$pingtimes[2]}
}

Espera que isso ajude alguém.

    
por 01.04.2015 / 23:17