É possível mostrar apenas a quantidade de milissegundos ao executar o ping em vez de toda a página de resultados?
Quero verificar se meus servidores estão online, então quero retornar "OK xyz ms" ou "FAIL". Atualmente estou fazendo assim:
#!/bin/sh
ergebnis=$(ping -qc1 google.com)
ok=$?
avg=$(echo -e "$ergebnis" | tail -n1 | awk '{print $4}' | cut -f 2 -d "/")
if [ $ok -eq 0 ]
then
echo "OK $avg ms"
else
echo "FAIL"
fi
No entanto, isso usa alguns canais e, como estou executando esse comando com bastante frequência para monitorar meus servidores, estou me perguntando se existe uma abordagem "mais inteligente". Também tenho medo de que meus canais não funcionem corretamente quando o comando ping falhar.
Outra
awk
variação:-F'/'
- trate a barra/
como separador de campoSaída de exemplo:
Não há muito o que fazer com
ping
ele mesmo, mas você pode fazer todo o processamento no AWK, diminuindo a quantidade de pipes, processos etc.:Se você não está muito preocupado com a mensagem de erro exata, que tal
Se você deseja apenas o status (e não milissegundos , etc.), pode fazê-
if
lo. Este trabalho para o meu caso de uso: