web-dev-qa-db-fra.com

Ping avec horodatage

Sur la commande Windows Invite 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

Existe-t-il des possibilités pour obtenir un résultat comme celui-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

S'il vous plaît noter que je veux y parvenir avec seulement les commandes fournies par CMD

56
Isaac Lem
@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. Pour utiliser à partir de la ligne de commande, remplacez %%a par %a

Démarrez la commande ping, forcez une sortie en mémoire de ligne correcte (find /v) et démarrez un processus cmd avec extension retardée activée qui effectuera une boucle infinie lisant les données acheminées qui seront répercutées sur la console avec le préfixe actuel.

2015-01-08 edité : Dans les versions plus récentes/machines/os, il y avait un problème de synchronisation dans le code précédent, le set /p lisant une ligne alors que la commande ping l'écrivait encore et le résultat est des coupes de lignes.

@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 additionnelles sont incluses au début du sous-shell (une seule peut être utilisée mais pause consomme un caractère d'entrée, une paire CRLF est rompue et une ligne avec un LF est lue) pour attendre données d'entrée et un ping -n 2 localhost est inclus pour attendre une seconde à chaque lecture dans la boucle interne. Le résultat est un comportement plus stable et une utilisation moindre du processeur.

REMARQUE: la ping intérieure peut être remplacée par la pause, mais le premier caractère de chaque ligne lue est utilisé par la pause et n'est pas récupéré par le set /p.

80
MC ND

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
42
Hames

Vous pouvez simplement faire ceci:

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

Bien que cela ne donne pas les statistiques que vous obtenez habituellement lorsque vous frappez ^ C à la fin.

27
Sam Critchley

Script de lot:

@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 demande à quel hôte envoyer une requête ping . La sortie de la commande ping est sortie vers l'écran et le fichier journal . Exemple de sortie du 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 est nommé LOG_ [nomhôte] .log et écrit dans le même dossier que le script.

24
sabo-fx

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 en tant que 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
rubo77

Essaye ça:

Créez un fichier de commandes 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 vous obtenez toujours les informations dont vous avez besoin.

Une méthode encore meilleure consiste à utiliser fping, allez ici http://www.kwakkelflap.com/fping.html pour le télécharger.

2
jjrab

Cela pourrait 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

- Recherchez le fichier Ping_IP.txt dans le répertoire en cours ou le chemin de répertoire de l'utilisateur.

La commande ci-dessus vous donne la 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
2
khalidmehmoodawan

Essayez ceci insted: 

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

1
JuanZR

J'ai également besoin de cela pour surveiller le problème de réseau lié au délai d'attente de la mise en miroir de 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

Il vous suffit de modifier Google.com en fonction de votre nom de serveur. Cela fonctionne parfaitement pour moi. et rappelez-vous d'arrêter cela quand vous avez fini. Le fichier pingtest.txt augmentera de 4,5 Ko par minute (environ).

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

0
DBALUKE HUANG

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
Chris Richardson

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"

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 os.

0
Eldar Value

Une amélioration de la réponse de MC ND pour Windows.
J’avais besoin d’un script pour fonctionner sous WinPE, j’ai donc procédé comme 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 à 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
Mike Schlueter