Cuando hago ping tengo esta pantalla:
> ping -i 4 www.google.fr
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms
Me gustaría tener el tiempo del ping antes.
Algo como:
> (right functions) + ping -i 7 www.google.fr
mardi 15 mai 2012, 10:29:06 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
mardi 15 mai 2012, 10:29:13 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
mardi 15 mai 2012, 10:29:20 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms
¿Cómo haría esto en una línea de comando (si es posible)?
command-line
ping
Olivier Pons
fuente
fuente
Respuestas:
Utilizar:
Obtendrás el resultado así:
fuente
ping 192.168.70.1 | while read pong; do echo "$(awk '{print $1}' /proc/uptime): $pong"; done
Otra posibilidad de utilizar la
ping -D
opción que le proporciona la marca de tiempo como hora Unix.Aquí una versión del comando "Achu" con un formato ligeramente diferente:
Eso te atrapa:
fuente
Hay una utilidad llamada
ts
, que lee stdin, agrega marcas de tiempo y lo escribe en stdout:Se puede instalar en Ubuntu con .
sudo apt install moreutils
fuente
apt install moreutils
También puede usar
gawk
(oawk
, si sus/etc/alternatives/awk
puntos a/usr/bin/gawk
):Esto es similar al enfoque en la respuesta de Achu , pero
ping
la salida de la canalización se dirige agawk
un bucle de shell que llamadate
. Al igual que con ese enfoque, funciona sin él-c
, pero si no pasa para hacer que el ping se detenga después de n pings, y detiene el ciclo con + , no imprimirá las estadísticas habituales.-c n
CtrlCping
Esto sucede ya sea que
ping
la salida se canalice agawk
unwhile
bucle de shell . La razón es que el comando en el lado derecho de la tubería, en lugar deping
, recibe SIGINT cuando se presiona Ctrl+ C, yping
no sabe imprimir las estadísticas antes de terminar.Si ha corrido
ping
sin-c
en el lado izquierdo de una tubería (como se muestra arriba) y desea terminarlo de tal manera que todavía imprima las estadísticas, entonces en lugar de presionar Ctrl+ Cen el terminal donde está corriendo, puede ejecutar desde otro terminal, reemplazando con el ID de proceso del comando. Si solo está ejecutando una instancia de, entonces simplemente podría usar .kill -INT PID
PID
ping
ping
killall -INT ping
Alternativamente, puede reemplazar el
ping
comando en el lado izquierdo de la tubería con un comando que ejecuta un shell, informa el ID del proceso de ese shell y luego reemplaza ese shell con elping
comando (haciendo que tenga el mismo PID):Luego, la primera línea de salida mostrará el ID del proceso del
ping
comando (que generalmente será diferente cada vez). Se vería así, pero con una fecha y hora diferentes y probablemente una ID de proceso diferente:Luego, desde otro terminal, puede ejecutar
kill -INT 7557
, reemplazando7557
con el ID de proceso real que vio, para finalizar elping
comando de tal manera que haga que imprima estadísticas.(Si aprovecha las funciones de control de trabajo de su shell , también puede lograr esto dentro de la misma terminal. Pero si desea copiar texto desde su terminal sin tener que quitar ninguna parte extrañosa donde ejecutó comandos en esa terminal, entonces debe terminar
ping
desde un terminal separado).Otras lecturas:
man ping
- " Cuando se ha enviado (y recibido) el número especificado de paquetes o si el programa finaliza con una SIGINT, se muestra un breve resumen " .fuente
SIGINT
(que es lo que hace presionar Ctrl + C) alping
proceso específicamente, usandokill
okillall
. He ampliado esta respuesta con detalles.Si está interesado en guardarlo en un archivo, escriba el siguiente comando en el terminal
No necesita crear ningún archivo de texto, lo hará automáticamente
Ping_Test.txt
fuente
(gracias a Achu y Eliah Kagan por las ideas) hay una manera de
ping
salidaping
ctrl+c
para hacer esto, se debe indicar a la parte derecha del comando (después de la tubería) que ignore el
SIGINT
uso detrap "" INT
:fuente