Substituição de ping que mostra em tempo real

9

Existe uma substituição de ping que exibirá a data / hora do sistema, além do tempo de ida e volta e do número de sequência? Eu preferiria uma ferramenta que fosse executada no Linux, mas se houvesse uma ferramenta cli, eu poderia rodar no Windows, isso também seria bom.

Existe um sistema que os usuários estão relatando intermitentemente pausando . Isso não parece acontecer em nenhum momento consistente. Não consegui fazer com que o usuário do relatório informasse quando aconteceu com especificidade suficiente para poder correlacionar a pausa a qualquer registro.

Um dos técnicos deixou um ping correndo contra o host por um dia. O tempo de ida e volta ficou muito grande em um ponto no tempo. Eu estou tentando descobrir quando exatamente isso acontece para que eu possa limitar quais entradas de log eu deveria estar olhando e possivelmente correlacionar essa pausa com outros dados que eu possa coletar com logs de desempenho, dispositivo logs e assim por diante.

64 bytes from 10.2.4.241: icmp_seq=1825 ttl=64 time=0.321 ms
64 bytes from 10.2.4.241: icmp_seq=1826 ttl=64 time=0.371 ms
64 bytes from 10.2.4.241: icmp_seq=1827 ttl=64 time=13937.638 ms
64 bytes from 10.2.4.241: icmp_seq=1828 ttl=64 time=12937.526 ms
64 bytes from 10.2.4.241: icmp_seq=1829 ttl=64 time=11937.392 ms
64 bytes from 10.2.4.241: icmp_seq=1830 ttl=64 time=10937.275 ms
...
64 bytes from 10.2.4.241: icmp_seq=1840 ttl=64 time=936.073 ms
64 bytes from 10.2.4.241: icmp_seq=1841 ttl=64 time=0.410 ms
    
por Zoredache 03.11.2009 / 01:12

5 respostas

11

Você pode adicionar timestamps usando perl assim:

ping 127.0.0.1 | perl -pe 'BEGIN {use POSIX;} print strftime("%Y-%m-%d %H:%M:%S ", localtime)'
    
por 03.11.2009 / 01:19
12

Aqui está uma solução bash:)

$ ping localhost | while read line ; do echo -e "$(date)\t $line" ; done
Tue Nov  3 04:46:26 MSK 2009     PING localhost (127.0.0.1) 56(84) bytes of data.
Tue Nov  3 04:46:26 MSK 2009     64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.033 ms
Tue Nov  3 04:46:27 MSK 2009     64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.040 ms
Tue Nov  3 04:46:28 MSK 2009     64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.046 ms
Tue Nov  3 04:46:29 MSK 2009     64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.046 ms

Agora, vamos fazer com que o comando date produza uma saída um pouco mais legal:

$ ping localhost | while read line ; do echo -e "$(date +%H:%I:%S)\t $line" ; done
04:04:13         PING localhost (127.0.0.1) 56(84) bytes of data.
04:04:13         64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.044 ms
04:04:14         64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.039 ms
04:04:15         64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.042 ms

Felicidades!

    
por 03.11.2009 / 02:48
5

Uma opção "mais pesada" que usamos para verificar regularmente a latência e a perda de pacotes é Smokeping . Ele não apenas fornece um pouco mais de informações em um formato mais fácil de ler, mas também pode fazer coisas como verificações de HTTP e DNS em vez de confiar no ICMP. Muitos firewalls e roteadores irão priorizar o ICMP, resultando em falsas medições de latência.

    
por 03.11.2009 / 22:44
2

Para Linux, instale moreutils , que lhe dará ts .

$ ping nu.nl | ts
jan 29 14:39:51 PING nu.nl (62.69.166.254) 56(84) bytes of data.
jan 29 14:39:51 64 bytes from 62-69-166-254.ptr.as24646.net (62.69.166.254): icmp_seq=1 ttl=247 time=29.8 ms
jan 29 14:39:52 64 bytes from 62-69-166-254.ptr.as24646.net (62.69.166.254): icmp_seq=2 ttl=247 time=29.4 ms
    
por 29.01.2014 / 14:40
0

Vamos usar o shell printf incorporado com a especificação do formato %(datefmt)T para evitar chamar intérpretes mais pesados ou criar um novo processo date para cada linha.

ping -c4 localhost | while read line; do printf "%([%Y-%m-%dT%H:%M:%S])T %s\n" "-1" "$line"; done

Como o exemplo perl, isso pode ser feito canalizando para sed e awk também. Eu acho que ts é o mais fácil, mas não temos isso em nossos servidores. O mesmo para ambientes como o busybox.

Se o seu comando armazenar em buffer sua saída, você poderá usar unbuffer .

    
por 19.05.2018 / 03:21

Tags