developer tip

타임 스탬프로 핑

copycodes 2020. 11. 22. 19:56
반응형

타임 스탬프로 핑


Windows 명령 프롬프트 cmd에서ping -t to 10.21.11.81

Reply from 10.21.11.81: bytes=32 time=3889ms TTL=238
Reply from 10.21.11.81: bytes=32 time=3738ms TTL=238
Reply from 10.21.11.81: bytes=32 time=3379ms TTL=238

이와 같은 출력을 얻을 수있는 가능성이 있습니까?

10:13:29.421875 Reply from 10.21.11.81: bytes=32 time=3889ms TTL=238
10:13:29.468750 Reply from 10.21.11.81: bytes=32 time=3738ms TTL=238
10:13:29.468751 Reply from 10.21.11.81: bytes=32 time=3379ms TTL=238

CMD에서 제공하는 명령만으로이 작업을 수행하고 싶습니다.


@echo off
    ping -t localhost|find /v ""|cmd /q /v:on /c "for /l %%a in (0) do (set "data="&set /p "data="&if defined data echo(!time! !data!)" 

참고 : 배치 파일 내에서 사용할 코드입니다. 대체 명령 줄에서 사용 %%a하여%a

핑을 시작하고 올바른 라인 버퍼 출력 ( find /v)을 강제 실행 한 cmd다음 현재 시간이 접두사 인 콘솔에 에코 될 파이프 된 데이터를 읽는 무한 루프를 수행하는 지연된 확장을 사용 하여 프로세스를 시작합니다 .

2015-01-08 edited : 더 빠른 / 최신 머신 / OS 버전에서는 이전 코드에 동기화 문제가있어 명령이 여전히 쓰기를 수행하고 결과가 줄을 잘라내는 set /p동안 줄을 읽습니다 ping.

@echo off
    ping -t localhost|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost>nul"

두 개의 추가 pause명령이 서브 쉘의 시작 부분에 포함되어 있습니다 (하나만 사용할 수 있지만 pause입력 문자 소비하므로 CRLF 쌍이 끊어지고 LF가있는 행을 읽음) 입력 데이터를 기다리며 a ping -n 2 localhost가 포함됩니다. 내부 루프에서 읽을 때마다 잠시 기다리십시오. 그 결과 더 안정적인 동작과 CPU 사용량이 줄어 듭니다.

참고 : 내부 ping는로 바꿀 수 pause있지만 읽은 각 행의 첫 번째 문자는에서 소비되고 pause검색되지 않습니다.set /p


WindowsPowershell :

옵션 1

ping.exe -t COMPUTERNAME|Foreach{"{0} - {1}" -f (Get-Date),$_}

옵션 2

Test-Connection -Count 9999 -ComputerName COMPUTERNAME | Format-Table @{Name='TimeStamp';Expression={Get-Date}},Address,ProtocolAddress,ResponseTime

다음과 같이 할 수 있습니다.

ping 10.0.0.1 | while read line; do echo `date` - $line; done

마지막에 ^ C를 눌렀을 때 일반적으로 얻는 통계는 제공하지 않습니다.


배치 스크립트 :

@echo off

set /p host=host Address: 
set logfile=Log_%host%.log

echo Target Host = %host% >%logfile%
for /f "tokens=*" %%A in ('ping %host% -n 1 ') do (echo %%A>>%logfile% && GOTO Ping)
:Ping
for /f "tokens=* skip=2" %%A in ('ping %host% -n 1 ') do (
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A>>%logfile%
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A
    timeout 1 >NUL 
    GOTO Ping)

이 스크립트는 ping 할 호스트를 묻습니다. Ping 출력은 화면과 로그 파일로 출력됩니다. 로그 파일 출력 예 :

Target Host = www.nu.nl
Pinging nu-nl.gslb.sanomaservices.nl [62.69.166.210] with 32 bytes of data: 
24-Aug-2015 13:17:42 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250
24-Aug-2015 13:17:43 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250
24-Aug-2015 13:17:44 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250

로그 파일 이름은 LOG_ [hostname] .log이며 스크립트와 동일한 폴더에 기록됩니다.


Windows에서

다른 답변 중 하나를 사용할 수 있습니다.

Unix / Linux에서

while :;do ping -n -w1 -W1 -c1 10.21.11.81| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done

또는 pingt~ / .bashrc의 기능 으로 :

pingt() {
  while :;do ping -n -w1 -W1 -c1 $1| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done
}

출처 : https://stackoverflow.com/a/26666549/1069083


누군가에게 도움이 될 수 있습니다. [Windows PowerShell에서 실행해야 함]

ping.exe -t 10.227.23.241 |Foreach{"{0} - {1}" -f (Get-Date),$_} >> Ping_IP.txt

-현재 디렉터리 또는 사용자 홈 경로에서 Ping_IP.txt 파일을 확인합니다.

위의 명령은 아래와 같은 파일로 출력합니다.

9/14/2018 8:58:48 AM - Pinging 10.227.23.241 with 32 bytes of data:
9/14/2018 8:58:48 AM - Reply from 10.227.23.241: bytes=32 time=29ms TTL=117
9/14/2018 8:58:49 AM - Reply from 10.227.23.241: bytes=32 time=29ms TTL=117
9/14/2018 8:58:50 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
9/14/2018 8:58:51 AM - Reply from 10.227.23.241: bytes=32 time=27ms TTL=117
9/14/2018 8:58:52 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
9/14/2018 8:58:53 AM - Reply from 10.227.23.241: bytes=32 time=27ms TTL=117
9/14/2018 8:58:54 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117

이 시도:

다음을 사용하여 배치 파일을 만듭니다.

echo off

cd\

:start

echo %time% >> c:\somedirectory\pinghostname.txt

ping pinghostname >> c:\somedirectory\pinghostname.txt

goto start

요구 사항에 따라 ping 명령에 고유 한 옵션을 추가 할 수 있습니다. 이것은 핑과 같은 줄에 타임 스탬프를 두지 않지만 여전히 필요한 정보를 얻습니다.

더 나은 방법은 fping을 사용 하는 것입니다. http://www.kwakkelflap.com/fping.html이동 하여 다운로드하십시오.


이것을 insted보십시오 :

ping -c2 -s16 sntdn | awk '{print NR " | " strftime("%Y-%m-%d_%H:%M:%S") " | " $0 }' A VER QUE TE PARECE, OJALA Y TE SIRVA


Another powershell method (I only wanted failures)

$ping = new-object System.Net.NetworkInformation.Ping
$target="192.168.0.1"
Write-Host "$(Get-Date -format 's') Start ping to $target"
while($true){
    $reply = $ping.send($target)
    if ($reply.status -eq "Success"){
        # ignore success    
        Start-Sleep -Seconds 1
    }
    else{
        Write-Host "$(Get-Date -format 's') Destination unreachable" $target

    }
}

I also need this to monitor the network issue for my database mirroring time out issue. I use the command code as below:

ping -t Google.com|cmd /q /v /c "(pause&pause)>nul & for /l %a in () do (set /p "data=" && echo(!date! !time! !data!)&ping -n 2 Google.com>nul" >C:\pingtest.txt

You just need to modify Google.com to your server name. It works perfectly for me. and remember to stop this when you finished. The pingtest.txt file will increase by 4.5 KB per min (around).

Thank for raymond.cc. https://www.raymond.cc/blog/timestamp-ping-with-hrping/


I think my code its what everyone need:

ping -w 5000 -t -l 4000 -4 localhost|cmd /q /v /c "(pause&pause)>nul &for /l %a in () do (for /f "delims=*" %a in ('powershell get-date -format "{ddd dd-MMM-yyyy HH:mm:ss}"') do (set datax=%a) && set /p "data=" && echo([!datax!] - !data!)&ping -n 2 localhost>nul"

to display:

[Fri 09-Feb-2018 11:55:03] - Pinging localhost [127.0.0.1] with 4000 bytes of data:
[Fri 09-Feb-2018 11:55:05] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:08] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:11] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:13] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128

note: code to be used inside a command line, and you must have powershell preinstalled on os.


An enhancement to MC ND's answer for Windows.
I needed a script to run in WinPE, so I did the following:

@echo off
SET TARGET=192.168.1.1
IF "%~1" NEQ "" SET TARGET=%~1

ping -t %TARGET%|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost >nul"

This can be hardcoded to a particular IP Address (192.168.1.1 in my example) or take a passed parameter. And as in MC ND's answer, repeats the ping about every 1 second.

참고URL : https://stackoverflow.com/questions/24906268/ping-with-timestamp

반응형