Como parar o comando ping se não houver resposta após 1 segundo? [duplicado]

1

Estou escrevendo um loop que verifica se uma conexão foi estabelecida.

Estou fazendo

ping -c 1 8.8.8.8
while [ $? -ne 0 ] do
  sleep 0.5
  ping -c 1 8.8.8.8
done

Agora não sei como isso funciona, se a solicitação de ping foi bloqueada ao sair (iptables ou outro), o comando e o script serão interrompidos indefinidamente. O que eu quero é parar de esperar por uma resposta após 1 segundo e enviar uma nova solicitação. Até que eu receba uma resposta mais rápida que 1sec, o $? é igual a 0 e quebra o loop.

    
por ChiseledAbs 27.07.2016 / 19:35

1 resposta

3
while ! (ping -c 1 -W 1 8.8.8.8 > /dev/null); do
  sleep 1
done
echo "< 1 sec reply received...exiting"
    
por 27.07.2016 / 19:46

Tags