Como eu escrevo um script awk que captura o tempo do ping em segundos?

0

Como posso fazer ping show ms e hora em (segundos)?

Eu encontrei este script:

$ ping google.com | awk 'BEGIN {FS="[=]|[ ]"} {print $11}'
16.8
16.8
15.7
18.8

Como escrevo um script awk que aparece em segundos?

1  16.8
2  16.8
3  15.7
4  18.8

Os valores armazenados precisam ser salvos no arquivo > > arquivo.txt

    
por Jozef397 13.04.2015 / 17:58

2 respostas

2

Abra um terminal e execute este comando:

ping -c 4 google.com | awk -F "[=]|[ ]" '/bytes from/{print NR "\t" $11/1000 }' > out.txt

Onde:

  • -c 4 (por exemplo, 4)

    Limita o número de solicitações para que o "awk" possa gravar em um arquivo.

  • $11/1000

    Converte milissegundos em segundos

por A.B. 13.04.2015 / 18:11
1

Se você insistir em awk , poderá fazer:

$ ping -c 4 google.com | 
    awk -F "[= ]" '$2=="bytes"{print ++c "\t" $(NF-1)/1000 }' 
1   0.0361
2   0.036
3   0.0357
4   0.0363

Pessoalmente, eu faria isso usando grep e só usaria awk para multiplicar os milissegundos por 1000:

$ ping -c4 google.com | grep -Po 'time=\K[\d.]+' | awk '{print NR,$1/1000}'
1 0.0357
2 0.0364
3 0.0364
4 0.0364

Ou Perl:

$ ping -c4 google.com | perl -lne '/time=([\d.]+)/ && print ++$c,"\t",$1/1000'
1   0.0361
2   0.0357
3   0.0363
4   0.0361

Para salvar a saída em um arquivo, basta usar o redirecionamento. Adicione > outfile a qualquer um dos comandos acima:

ping -c4 google.com | perl -lne '/time=([\d.]+)/ && print ++$c,"\t",$1/1000' > outfile
    
por terdon 13.05.2015 / 20:24