tracert tipos puerto parametros hacer extendido especifico como comando bash osx-lion ping bsd

bash - tipos - ¿Cómo se marca el tiempo cada resultado de ping?



tipos de ping (14)

  1. salida del terminal:

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

  2. salida del archivo:

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

  3. salida de archivo terminal +:

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

  4. Fondo de salida de archivo:

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

Ping devuelve esto por defecto:

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

¿Hay alguna forma de conseguirlo para agregar la marca de tiempo?

Por ejemplo,

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

Estoy en OS X v10.7 (Lion) que parece tener alguna versión BSD de ping.


De man ping :

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

Producirá algo como esto:

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

Entonces, la marca de tiempo podría ser analizada a partir de la respuesta de ping y convertida al formato requerido con la date .


En OS X puedes simplemente usar la opción --apple-time:

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

Produce resultados como:

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


En macos puedes hacer

ping --apple-time 127.0.0.1

La salida se ve como

16:07:11.315419 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.064 ms 16:07:12.319933 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.157 ms 16:07:13.322766 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.066 ms 16:07:14.324649 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.148 ms 16:07:15.328743 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.092 ms


Mi envío original fue incorrecto porque no evaluó la fecha de cada línea. Se han hecho correcciones.

Prueba esto

ping google.com | xargs -L 1 -I ''{}'' date ''+%+: {}''

produce la siguiente salida

Thu Aug 15 10:13:59 PDT 2013: PING google.com (74.125.239.103): 56 data bytes Thu Aug 15 10:13:59 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=0 ttl=55 time=14.983 ms Thu Aug 15 10:14:00 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=1 ttl=55 time=17.340 ms Thu Aug 15 10:14:01 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=2 ttl=55 time=15.898 ms Thu Aug 15 10:14:02 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=3 ttl=55 time=15.720 ms Thu Aug 15 10:14:03 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=4 ttl=55 time=16.899 ms Thu Aug 15 10:14:04 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=5 ttl=55 time=16.242 ms Thu Aug 15 10:14:05 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=6 ttl=55 time=16.574 ms

La opción -L 1 hace que xargs procese una línea a la vez en lugar de palabras.


No especificó ninguna marca de tiempo ni intervalo durante cuánto tiempo requeriría dicha salida, por lo que consideré que era un ciclo infinito. Puede cambiarlo según su necesidad.

while true do echo -e "`date`|`ping -n -c 1 <IP_TO_PING>|grep ''bytes from''`" sleep 2 done


No pude redirigir la solución basada en Perl a un archivo por alguna razón, así que seguí buscando y encontré una forma bash de hacerlo:

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

El crédito va a https://askubuntu.com/a/137246


Prueba esta línea

while sleep 1;do echo "$(date +%d-%m-%y-%T) $(ping -c 1 whatever.com | gawk ''FNR==2{print "Response from:",$4,$8}'')" | tee -a /yourfolder/pingtest.log;done

Tendrás que cancelarlo con ctrl-c tho.


Prueba esto:

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

Devuelve algo como:

Wednesday 18 January 09:29:20 AEDT 2017: PING www.google.com (216.58.199.36) 56(84) bytes of data. Wednesday 18 January 09:29:20 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=1 ttl=57 time=2.86 ms Wednesday 18 January 09:29:21 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=2 ttl=57 time=2.64 ms Wednesday 18 January 09:29:22 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=3 ttl=57 time=2.76 ms Wednesday 18 January 09:29:23 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=4 ttl=57 time=1.87 ms Wednesday 18 January 09:29:24 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=5 ttl=57 time=2.45 ms


Puedes crear una función en tu archivo ~/.bashrc , para que obtengas un comando ping-t en tu consola:

function ping-t { ping "$1" | while read pong; do echo "$(date): $pong"; done; }

Ahora puede llamar esto en la consola:

ping-t example.com

Sa 31. Mär 12:58:31 CEST 2018: PING example.com (93.184.216.34) 56 (84) bytes de datos.
Sa 31. Mär 12:58:31 CEST 2018: 64 bytes desde 93.184.216.34 (93.184.216.34): icmp_seq = 1 ttl = 48 tiempo = 208 ms
Sa 31. Mär 12:58:32 CEST 2018: 64 bytes desde 93.184.216.34 (93.184.216.34): icmp_seq = 2 ttl = 48 tiempo = 233 ms


Si su AWK no tiene strftime() :

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

Para redirigirlo a un archivo, use la redirección de shell estándar y apague el buffer de salida:

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

Si quieres el formato ISO8601 para la marca de tiempo:

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


También necesito esto para supervisar el problema de red para el problema de tiempo de espera de reflejo de la base de datos. Uso el código de comando de la siguiente manera:

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

Solo necesita modificar Google.com a su nombre de servidor. Funciona perfectamente para mí. y recuerda detener esto cuando termines. El archivo pingtest.txt aumentará en 1 KB por segundo (alrededor).

Gracias por raymond.cc. https://www.raymond.cc/blog/timestamp-ping-with-hrping/


Transmite el resultado a awk :

ping host | awk ''{if($0 ~ /bytes from/){print strftime()"|"$0}else print}''


ping -D -n -O -i1 -W1 8.8.8.8

o tal vez

while true; do / ping -n -w1 -W1 -c1 8.8.8.8 / | grep -E "rtt|100%" / | sed -e "s/^/`date` /g"; / sleep 1; / done