Ping avec horodatage

Sur l'invite de commande Windows cmd, j'utilise 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

Y a-t-il des possibilités d'obtenir une sortie comme celle-ci?

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

Veuillez noter que je veux y parvenir avec uniquement les commandes fournies par CMD

53
demandé sur rubo77 2014-07-23 13:04:38

12 réponses

@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!)" 

note : code à utiliser dans un fichier batch. À utiliser à partir de la ligne de commande Remplacer %%a par %a

Démarrez le ping, forcez une sortie tamponnée de ligne correcte (find /v), et démarrez un processus cmd avec une expansion retardée activée qui fera une boucle infinie lisant les données canalisées qui seront renvoyées à la console préfixée avec l'heure actuelle.

2015-01-08 édité: Dans les versions plus rapides/plus récentes de machines / os, il y a un problème de synchronisation dans le code précédent, faire en sorte que le set /p Lise une ligne alors que la commande ping l'écrit toujours et que le résultat est des coupes de ligne.

@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"

Deux commandes pause supplémentaires sont incluses au début du sous-shell (une seule peut être utilisée, mais comme pause consomme un caractère d'entrée, une paire CRLF est cassée et une ligne avec un LF est lue) pour attendre les données d'entrée, et un ping -n 2 localhost est inclus pour attendre une seconde pour chaque lecture dans la boucle interne. Le résultat est un comportement plus stable et moins de CPU utilisation.

REMARQUE: L'intérieur ping peut être remplacé par un pause, mais le premier caractère de chaque ligne lue est consommée par les pause et non récupérées par l' set /p

78
répondu MC ND 2015-02-10 16:51:57

WindowsPowershell:

Option 1

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

Option 2

Test-Connection -Count 9999 -ComputerName COMPUTERNAME | Format-Table @{Name='TimeStamp';Expression={Get-Date}},Address,ProtocolAddress,ResponseTime
36
répondu Hames 2016-11-14 16:24:32

Script par lots:

@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)

Ce script demandera quel hôte effectuer un ping. Ping sortie est sortie à l'écran et le fichier journal. Exemple de sortie de fichier journal:

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

Le fichier journal s'appelle LOG_ [nom d'hôte].journal et écrit dans le même dossier que le script.

23
répondu sabo-fx 2018-09-11 11:36:10

Vous pouvez simplement faire ceci:

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

Bien qu'il ne donne pas les statistiques que vous obtenez habituellement lorsque vous appuyez sur ^C à la fin.

21
répondu Sam Critchley 2017-05-24 09:50:40

Sur Windows

, Vous pouvez utiliser l'une des autres réponses.

Sous 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

Ou comme Fonction pingt pour votre ~/.bashrc:

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

Source: https://stackoverflow.com/a/26666549/1069083

4
répondu rubo77 2017-05-23 11:47:32

Essayez ceci:

Créez un fichier batch avec les éléments suivants:

echo off

cd\

:start

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

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

goto start

Vous pouvez ajouter vos propres options à la commande ping en fonction de vos besoins. Cela ne met pas l'horodatage sur la même ligne que le ping, mais il vous obtient toujours les informations dont vous avez besoin.

Un moyen encore meilleur est d'utiliser fping, allez ici http://www.kwakkelflap.com/fping.html {[9] } pour le télécharger.

2
répondu jjrab 2015-08-10 06:49:05

Essayez ceci 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

1
répondu JuanZR 2017-03-14 18:47:20

J'ai également besoin de cela pour surveiller le problème de réseau pour mon problème de temporisation de la mise en miroir de la base de données. J'utilise le code de commande comme ci-dessous:

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

Vous avez juste besoin de modifier Google.com à votre nom de serveur. Cela fonctionne parfaitement pour moi. et n'oubliez pas d'arrêter ça quand vous aurez fini. Le pingtest.le fichier txt augmentera de 4,5 KO par minute (environ).

Remercier pour raymond.cc. https://www.raymond.cc/blog/timestamp-ping-with-hrping/

1
répondu DBALUKE HUANG 2017-09-15 13:46:08

Cela peut aider quelqu'un : [doit être exécuté dans Windows PowerShell]

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

-- Vérifiez le Ping_IP.fichier txt dans le répertoire courant ou le chemin d'accès de l'utilisateur.

La commande ci-dessus vous donne une sortie dans un fichier comme ci-dessous;

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
1
répondu khalidmehmoodawan 2018-09-14 04:00:29

Une autre méthode powershell (Je ne voulais que des échecs)

$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

    }
}
0
répondu Chris Richardson 2017-09-15 12:28:51

Je pense que mon code est ce dont tout le monde a besoin:

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"

Pour afficher:

[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 à utiliser dans une ligne de commande, et vous devez avoir powershell préinstallé sur le système d'exploitation.

0
répondu Eldar Value 2018-02-09 09:58:09

Une amélioration de la réponse de MC ND pour Windows.
J'avais besoin d'un script pour fonctionner dans WinPE, donc j'ai fait ce qui suit:

@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"

Cela peut être codé en dur sur une adresse IP particulière (192.168.1.1 dans mon exemple) ou prendre un paramètre passé. Et comme dans la réponse de MC ND, répète le ping environ toutes les 1 secondes.

0
répondu Mike Schlueter 2018-06-14 15:57:44