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
@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
.
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
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.
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.
Vous pouvez utiliser l'une des autres réponses.
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
}
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.
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
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
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/
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
}
}
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.
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.