Пинг с меткой времени
в командной строке 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
12 ответов:
@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
запустите ping, заставьте правильную линию буферизовать выход (
find /v
) иcmd
процесс с включенным отложенным расширением, который будет выполнять бесконечный цикл чтения передаваемых данных, которые будут эхом передаваться на консоль с префиксом текущего времени.2015-01-08редактировать: В быстрее / новее машины / версии ОС существует проблема синхронизации в предыдущем коде, что делает
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"
два aditional
pause
команды включены в начале подрешетки (только один может быть использован, но какpause
потребляет входной символ, пара CRLF разбивается и строка с LF считывается), чтобы дождаться входных данных, иping -n 2 localhost
включено для того чтобы ждать секунду для каждого прочитанного в внутренний цикл. Результатом является более стабильное поведение и меньшая загрузка процессора.Примечание: внутренний
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
пакетный скрипт:
@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 выводится на экран и файл журнала. Пример вывода файла журнала:
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_[имя хоста].войдите и запишите в ту же папку, что и скрипт.
вы можете просто сделать это:
ping 10.0.0.1 | while read line; do echo `date` - $line; done
хотя это не дает статистику, которую вы обычно получаете, когда вы нажимаете ^C в конце.
На 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 | grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done }
попробуйте это:
создайте пакетный файл со следующим:
echo off cd\ :start echo %time% >> c:\somedirectory\pinghostname.txt ping pinghostname >> c:\somedirectory\pinghostname.txt goto start
вы можете добавить свои собственные параметры с помощью команды ping на основе ваших требований. Это не ставит отметку времени на той же строке, что и 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
мне также нужно это для мониторинга сетевой проблемы для моей проблемы с зеркальным отображением базы данных. Я использую код, как показано ниже:
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
вам просто нужно изменить Google.com к вашему имени сервера. Это прекрасно работает для меня. и не забудьте остановить это, когда закончите. Самый пинг-тест.txt файл будет увеличиваться на 4,5 КБ в минуту (вокруг).
спасибо raymond.cc.https://www.raymond.cc/blog/timestamp-ping-with-hrping/
это может помочь кому-то : [должен быть запущен в 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
другой метод powershell (я хотел только сбои)
$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 } }
Я думаю, что мой код это то, что нужно всем:
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"
для отображения:
[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
Примечание: код, который будет использоваться в командной строке, и вы должны иметь powershell предварительно установлен на ОС.
улучшение ответа MC ND для Windows.
Мне нужен был скрипт для запуска в WinPE, поэтому я сделал следующее:@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"
Это может быть жестко закодировано на определенный IP-адрес (
192.168.1.1
в моем примере) или взять переданный параметр. И как в ответе MC ND, повторяет пинг примерно каждые 1 секунду.