102 votes

Comment puis-je horodater chaque résultat de ping ?

Ping renvoie cette information par défaut :

64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms

Y a-t-il un moyen de faire en sorte qu'il ajoute l'horodatage ?

Par exemple,

Mon 21 May 2012 15:15:37 EST | 64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms

Je suis sous OS X v10.7 (Lion) qui semble avoir des problèmes de sécurité. BSD version de ping.

153voto

richk Points 1034

Je n'ai pas pu rediriger la solution basée sur Perl vers un fichier pour une raison quelconque, alors j'ai continué à chercher et j'ai trouvé un fichier bash seul moyen de le faire :

ping www.google.fr | while read pong; do echo "$(date): $pong"; done

Wed Jun 26 13:09:23 CEST 2013: PING www.google.fr (173.194.40.56) 56(84) bytes of data.
Wed Jun 26 13:09:23 CEST 2013: 64 bytes from zrh04s05-in-f24.1e100.net (173.194.40.56): icmp_req=1 ttl=57 time=7.26 ms
Wed Jun 26 13:09:24 CEST 2013: 64 bytes from zrh04s05-in-f24.1e100.net (173.194.40.56): icmp_req=2 ttl=57 time=8.14 ms

Le mérite en revient à https://askubuntu.com/a/137246

81voto

Dennis Williamson Points 105818

Si votre AWK ne dispose pas de strftime() :

ping host | perl -nle 'print scalar(localtime), " ", $_'

Pour le rediriger vers un fichier, utilisez la redirection standard du shell et désactivez la mise en mémoire tampon de la sortie :

ping host | perl -nle 'BEGIN {$|++} print scalar(localtime), " ", $_' > outputfile

Si vous voulez le format ISO8601 pour l'horodatage :

ping host | perl -nle 'use Time::Piece; BEGIN {$|++} print localtime->datetime, " ", $_' > outputfile

36voto

En man ping :

   -D     Print timestamp (unix time + microseconds as in gettimeofday) before each line.

Cela donnera quelque chose comme ceci :

[1337577886.346622] 64 bytes from 4.2.2.2: icmp_req=1 ttl=243 time=47.1 ms

Ensuite, l'horodatage pourrait être analysé à partir du fichier ping et converti au format requis avec date .

30voto

Nicolas Grison Points 296

Sous OS X, vous pouvez simplement utiliser l'option --apple-time :

ping -i 2 --apple-time www.apple.com

Ça donne des résultats comme :

10:09:55.691216 64 bytes from 72.246.225.209: icmp_seq=0 ttl=60 time=34.388 ms
10:09:57.687282 64 bytes from 72.246.225.209: icmp_seq=1 ttl=60 time=25.319 ms
10:09:59.729998 64 bytes from 72.246.225.209: icmp_seq=2 ttl=60 time=64.097 ms

22voto

xuanyuanaosheng Points 892
  1. sortie du terminal :

    ping -i 5 google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}'

  2. sortie du fichier :

    ping -i 5 google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' > test.txt

  3. sortie terminal + fichier :

    ping -i 5 google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' | tee test.txt

  4. fond de sortie du fichier :

    nohup ping -i 5 google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' > test.txt &

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X