Quando faço o ping, tenho esta tela:
> 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
Eu gostaria de ter o tempo do 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
Como você faria isso em uma linha de comando (se possível)?
command-line
ping
Olivier Pons
fonte
fonte
Respostas:
Usar:
Você obterá o resultado assim:
fonte
ping 192.168.70.1 | while read pong; do echo "$(awk '{print $1}' /proc/uptime): $pong"; done
Outra possibilidade de usar a
ping -D
opção que fornece o registro de data e hora como hora do Unix.Aqui está uma versão do comando "Achu" com formato ligeiramente diferente:
Isso faz com que você:
fonte
Existe um utilitário chamado
ts
, que lê stdin, adiciona carimbos de data e hora e o grava no stdout:Pode ser instalado no Ubuntu com .
sudo apt install moreutils
fonte
apt install moreutils
Você também pode usar
gawk
(ouawk
, se os seus/etc/alternatives/awk
pontos para/usr/bin/gawk
):Isso é semelhante à abordagem na resposta de Achu , mas
ping
a saída do canal é canalizada emgawk
vez de um loop de shell que chamadate
. Como com essa abordagem, ela funciona sem-c
, mas se você não fizer o ping parar após n pings e parar o loop com + , não imprimirá as estatísticas usuais.-c n
CtrlCping
Isso acontece se
ping
a saída é canalizadagawk
ou umwhile
loop de shell . O motivo é que o comando no lado direito do pipe, em vez deping
, recebe SIGINT quando Ctrl+ Cé pressionado eping
não sabe imprimir as estatísticas antes de terminar.Se você executou
ping
sem-c
o lado esquerdo de um tubo (como mostrado acima) e deseja finalizá-lo de forma que ainda imprima as estatísticas, em vez de pressionar Ctrl+ Cno terminal em que está sendo executado, você pode executar de outro terminal, substituindo pelo ID do processo do comando. Se você estiver executando apenas uma instância , poderá simplesmente usar .kill -INT PID
PID
ping
ping
killall -INT ping
Como alternativa, você pode substituir o
ping
comando no lado esquerdo do pipe por um comando que executa um shell, relata o ID do processo desse shell e, em seguida, substitui esse shell peloping
comando (fazendo com que ele tenha o mesmo PID):Em seguida, a primeira linha de saída mostrará o ID do processo do
ping
comando (que normalmente será diferente a cada vez). Seria assim, mas com uma data e hora diferentes e provavelmente com um ID de processo diferente:Em seguida, a partir de outro terminal, você pode executar
kill -INT 7557
, substituindo7557
pelo ID do processo real que você viu, para finalizar oping
comando de forma a fazer com que ele imprima estatísticas.(Se você tirar proveito dos recursos de controle de tarefas do seu shell , também poderá obtê-lo no mesmo terminal. Mas se você deseja copiar o texto do seu terminal sem precisar remover nenhuma parte extravagante na qual você executou comandos naquele terminal, então você deve terminar
ping
de um terminal separado.)Leitura adicional:
man ping
- " Quando o número especificado de pacotes tiver sido enviado (e recebido) ou se o programa for finalizado com um SIGINT, um breve resumo será exibido. "fonte
SIGINT
(que é o que pressionar Ctrl + C) para oping
processo especificamente, usandokill
oukillall
. Expandi esta resposta com detalhes.Se você estiver interessado em salvá-lo no arquivo, digite o comando abaixo no terminal
Você não precisa criar nenhum arquivo de texto, ele fará automaticamente
Ping_Test.txt
fonte
(graças a Achu e Eliah Kagan pelas idéias), há uma maneira de
ping
saídaping
ctrl+c
Para fazer isso, deve-se instruir a parte direita do comando (após o pipe) a ignorar
SIGINT
usandotrap "" INT
:fonte