다른 두 컴퓨터 사이의 PING 시간을 측정할 수 있습니까?

다른 두 컴퓨터 사이의 PING 시간을 측정할 수 있습니까?

현장에서 성능 문제를 조사하고 있습니다. 일반적으로 내 앱이 속도를 내기에는 대역폭이 충분하지 않습니다. 일반적으로 작동 방식은 터미널(VNC 또는 WebEx를 통해)을 사용자 컴퓨터에 요청한 다음 명령 창을 작동시키고 서버에 PING을 실행하여 대기 시간을 확인하는 것입니다.

이 절차는 꽤 시간이 많이 걸립니다(예: 때때로 사람들이 책상에 앉아 있지도 않은 경우 등...).

사용자를 개입시키지 않고 사용자 컴퓨터에서 서버로 원격으로 PING을 실행할 수 있는 방법이 있습니까?

아니면 더 나은 대안이 있습니까?

답변1

제가 사용한 프로그램이 있습니다.데스크탑 센트럴 무료. 이를 통해 원격 컴퓨터의 명령 프롬프트에 연결하고 원하는 것을 실행할 수 있습니다. 기계가 작동하는 한 이 도구는 많은 도움이 될 수 있습니다. 또한 다른 사용자 입력 없이 원격 컴퓨터에서 수행할 수 있는 다른 많은 옵션/도구도 있습니다.

답변2

사용자의 컴퓨터에 공용 IP 주소가 있는 경우(NAT 뒤에 있지 않음) 서버에서 해당 컴퓨터를 ping할 수 있습니다.

답변3

나는 오히려 PowerShell의 Test-Connection을 좋아합니다.

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    

당연히 웹 사이트 대신 ComputerName을 사용할 수 있습니다. 이 솔루션을 제안하는 이유는 시간을 제공하고 대기 시간을 측정할 수 있는 기능을 제공하기 때문입니다.

답변4

OP에 대한 답변이 확실하지 않으므로 동일한 답변 검색에 실패한 후 개발한 내용을 제출하겠습니다.

저는 Exchange 서버와 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]}
}

이것이 누군가에게 도움이 되기를 바랍니다.

관련 정보