impede que a saída do ping seja mostrada (truncada) em vez de hora =

1

impede que a saída do ping mostre (truncated) em vez de time=##.# ms

O problema do formato de saída indesejado é claramente devido ao teste que estou executando: determinar o limite de perda de pacotes por tamanho de pacote. Minha pergunta é, como posso ver o tempo (em vez de "truncado") de qualquer maneira?

Formato de saída desejado:

user@desktop:~$ ping -c 10 -s 1372 -v hostname.com
PING hostname.com (X.X.X.X) 1372(1400) bytes of data.
1380 bytes from hostname.com (X.X.X.X): icmp_req=1 ttl=242 time=82.8 ms
1380 bytes from hostname.com (X.X.X.X): icmp_req=2 ttl=242 time=82.7 ms

--- hostname.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 82.826/83.038/83.250/0.212 ms

Formato de saída indesejado:

user@desktop:~$ ping -c 10 -s 1373 -v hostname.com
PING hostname.com (X.X.X.X) 1373(1401) bytes of data.
1376 bytes from hostname.com (X.X.X.X): icmp_req=1 ttl=242 (truncated)
1376 bytes from hostname.com (X.X.X.X): icmp_req=2 ttl=242 (truncated)

--- hostname.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 82.997/83.010/83.023/0.013 ms

No interesse da completude, mostrando também um erro intermitente.

user@desktop:~$ ping -c 2 -s 1373 -v hostname.com
PING hostname.com (X.X.X.X) 1373(1401) bytes of data.
From hostname2.com (Y.Y.Y.Y) icmp_seq=1 Frag needed and DF set (mtu = 1400)
1376 bytes from hostname.com (X.X.X.X): icmp_req=2 ttl=242 (truncated)

--- hostname.com ping statistics ---
2 packets transmitted, 1 received, +1 errors, 50% packet loss, time 999ms
rtt min/avg/max/mdev = 82.937/82.937/82.937/0.000 ms
    
por conman253 18.09.2017 / 18:59

1 resposta

1

Eu acredito que isso não seja possível.

Dada a minha leitura do código-fonte de ping se o tamanho dos dados retornados for menor do que o tamanho dos dados enviados, sempre será impresso.

Meu palpite é que o horário é considerado inválido ou inútil devido a dados truncados.

Para esclarecimento: o condicional da linha acima é

if (cc < datalen+8) {

cc representa o número de bytes recebidos e datalen é o número fornecido com a opção -s . Portanto, isso é verificar se o tamanho da resposta é menor que o tamanho enviado (1373 no seu segundo exemplo).

Outra coisa que eu notei é que o tempo é calculado no próximo bloco seguinte àquele que detecta os dados truncados. Após a linha que imprime o texto (truncated) , a função retorna, então o bloco de temporização nunca é executado.

Não é realmente uma resposta para resolver seu problema, mas uma explicação de por que isso não pode ser feito.
A resposta de como não mostrar (truncated) é: fazer o host remoto não truncar os pacotes.

    
por mjb2kmn 18.09.2017 / 21:34