Como posso fazer o ping do Linux mostrar o tempo limite das solicitações em vez de omitir a saída?
Assim como a versão Windows do ping.
linux
networking
ping
Andre
fonte
fonte
Respostas:
O fping não funcionou para mim ... No meu caso, na maioria das vezes eu quero ver isso basicamente durante a reinicialização do servidor ... isso funciona muito bem no Windows ...
Eu construo um script simples (expandindo a resposta @entropo) para me ajudar nisso, o que pode ajudar a responder a esta pergunta:
https://gist.github.com/brunobraga/7259197
E o uso é algo como:
fonte
A melhor coisa que encontrei foi usar o sinalizador -O (observe que ele não funciona em todas as distros - usando o Linux Mint 17.1 Rebecca IPUTILS-PING 3: 20121221-4ubuntu1.1)
Na página do manual:
-O Report outstanding ICMP ECHO reply before sending next packet. This is useful together with the timestamp -D to log output to a diagnostic file and search for missing answers.
fonte
ping
; no Debian Wheezy recebo "ping: invalid option -- 'O'
", mas no Jessie funciona como você observa. Você pode atualizar sua resposta para incluir essas informações. (Eu também apresentaram uma edição sugerido o uso de texto pré-formatado para a saída e a informação da página de manual)Quando eu uso o ping para ver se um host está em scripts de shell, faço algo assim:
ping -W 1 -c 1 $HOST 2>&1 > /dev/null || (echo -n "dead!"; false) && command-that-needs-host-to-be-up
Basicamente, envia um ICMP que atinge o tempo limite em um segundo sem saída e usa o código de saída para bloquear outras ações.
fonte
Não há como o comum
ping
fazer isso. Se você está tentando criar um script, você tem algumas opções:Se o ping falhar,
$?
será 1, se o ping for bem-sucedido,$?
será 0.A outra opção é usar
fping
isso funciona muito como a Ciscoping
:fonte
O script acima de bruno.braga funciona muito bem, no entanto, pessoalmente, eu prefiro um alias de uso em um perfil de shell (como .bashrc), para que possa ser um caso de uso diário.
Minha solução abaixo também calcula o número de sequência da solicitação ECHO automaticamente:
Aqui está o exemplo de saída quando o host está instável com um tempo limite:
Obviamente, a desvantagem é: nenhuma estatística no final quando CTRL-C é pressionado. Se desejado, também seria possível calcular min / avg / max pelo shell script, o mdev está muito além do escopo.
fonte
Receio, mas não há solução 100% para isso com ping padrão. Mesmo com ping -v para saída detalhada, o ping seria silencioso em caso de tempo limite. Você pode tentar usar:
Isso interromperia o ping após 2 segundos e mostraria o número de pacotes transmitidos e a perda de pacotes. Outra opção seria usar o mtr .
fonte
fonte
fping
é bom, e BTW-e
não é necessário quando-l
ou-c
é adicionado, poderia apenas usarfping -l 8.8.8.8
, a saída é a mesma.Eu realmente gosto do shell script do Bruno. Eu adicionei uma linha para criar um arquivo com todas as falhas.
echo -e "
date +'%Y/%m/%d %H:%M:%S'
- host $ host é \ 033 [0; 31mdown \ 033 [0m" >> ./lostpackets.txtfonte
Sem escrever nada
ping -f -i 1 hostname
Vantagens : comando padrão do Linux - nada para instalar ou script.
Desvantagens :
Com um script mínimo
Desvantagens : você não obtém estatísticas no final e não pode usar estas três opções de ping:
-i
para alterar o intervalo entre o envio de pacotes (é codificado para 1 segundo)-W
para alterar o tempo limite (é codificado para 1 segundo)-c
parar após enviar N pacotesBTW: Este é um dos exemplos extremamente raros de funcionalidade que realmente sinto falta de uma ferramenta CLI do Linux, mas encontro em uma ferramenta do Windows. A execução que prova a regra como eles dizem :-)
fonte
Se você deseja executar um ping contínuo, exatamente como o Windows e com carimbo de data e hora, use este. Sinta-se livre para substituir
192.168.0.1
por seu próprio endereço IPExemplo de resposta OK
A solicitação de exemplo expirou
fonte
O Ping normal realmente mostra tempos limite. Observando o valor seq = entre pings, você pode dizer quantos tempos limites
Ocorreram três intervalos de tempo do EG 3 entre os 2 pings acima desde o primeiro
seq=8
e o segundo foiseq=11
(9 e 10 foram intervalos)seq=sequence
.fonte