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"; doneOtra posibilidad de utilizar la
ping -Dopció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 moreutilsfuente
apt install moreutilsTambién puede usar
gawk(oawk, si sus/etc/alternatives/awkpuntos a/usr/bin/gawk):Esto es similar al enfoque en la respuesta de Achu , pero
pingla salida de la canalización se dirige agawkun 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 nCtrlCpingEsto sucede ya sea que
pingla salida se canalice agawkunwhilebucle 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, ypingno sabe imprimir las estadísticas antes de terminar.Si ha corrido
pingsin-cen 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 PIDPIDpingpingkillall -INT pingAlternativamente, puede reemplazar el
pingcomando 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 elpingcomando (haciendo que tenga el mismo PID):Luego, la primera línea de salida mostrará el ID del proceso del
pingcomando (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, reemplazando7557con el ID de proceso real que vio, para finalizar elpingcomando 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
pingdesde 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) alpingproceso específicamente, usandokillokillall. 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
pingsalidapingctrl+cpara hacer esto, se debe indicar a la parte derecha del comando (después de la tubería) que ignore el
SIGINTuso detrap "" INT:fuente