Однострочный пинг-ответ со временем и RTD в Windows - PullRequest
0 голосов
/ 12 марта 2019

Как получить время и ответную задержку (RTD) команды ping?

ping 10.11.12.13 -n 1 

каждую секунду в следующем формате:

 [time] [delay]
 [time] [delay]
 [time] [delay]
 ...

... в многофункциональном приложении командной строки Windows с набором команд Unix, таких как Cmder или ConEmu, Cygwin ...

Пример вывода:

12:00:01.123  20 ms
12:00:02.432  21 ms
...  

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Этого достаточно легко добиться, позволяя PowerShell получить время и отформатировать метку времени.

SET "RHOST=www.ibm.com"

powershell -NoLogo -NoProfile -Command ^
    "Test-Connection -ComputerName '%RHOST%' |" ^
        "ForEach-Object { '{0}  {1} ms' -f (Get-Date).ToString('HH:MM:ss.fff'), $_.ResponseTime }"

Конечно, проще, если скрипт написан только в PowerShell.

Test-Connection -ComputerName 'www.ibm.com' |
    ForEach-Object {
         '{0}  {1} ms' -f (Get-Date).ToString('HH:MM:ss.fff'), $_.ResponseTime
    }
0 голосов
/ 12 марта 2019

Возможное решение - использовать команду sed. Это все еще будет работать в случае отключения.

@echo off
:debut

FOR /F "tokens=*" %%i IN ('ping 10.11.12.13 -n 1 ^| sed -n "3p" ^| sed -r "s/.*time.(.*)\sTTL.*/\1/"' ) DO echo %time%   %%i

sleep 1
goto debut

Первая команда sed извлекает 3-ю строку, содержащую задержку в мс .

Вторая команда sed извлекает значение задержки, которое следует после "time" в и до " TTL".

Примечание: вы можете заменить time на temps для французской версии ping в Windows.

...