Como foi brevemente apontado nos comentários , ping
está exibindo essa mensagem para stderr, que você não havia redirecionado. Faça isso com:
...
ping -c1 pi$i.local > /dev/null 2>&1
...
Eu tenho vários Raspberry Pi nomeados numericamente (pi0, pi1, etc). Eles têm endereços IP estáticos, mas eu queria uma ferramenta simples para verificá-los e ter certeza de que eles estavam on-line, mesmo se tivessem o IP errado (eu tive alguns problemas no passado. Nada recentemente, mas parecia uma boa ideia para torná-lo infalível independentemente). Em vez de usar IPs, esta ferramenta usa nomes de host MDNS que já estão em um formato legal. O script que eu escrevi é:
#!/bin/bash
report+="Device Name Status Location\n"
report+="----------- ------ --------\n"
for i in {0..3}
do
report+="Pi$i "
ping -c1 pi$i.local > /dev/null
if [ $? == 0 ]
then
report+="Online "
report+=$(ping -c1 pi$i.local | grep -o "\w*192.168.1.\w*" | head -1)
else
report+="Unreachable"
fi
report+="\n"
done
echo -e "$report"
Funciona maravilhosamente quando os dispositivos estão online, retornando
Device Name Status Location
----------- ------ --------
Pi0 Online 192.168.1.3
Pi1 Online 192.168.1.4
Pi2 Online 192.168.1.5
Pi3 Online 192.168.1.6
No entanto, quando estão offline, a saída é semelhante a esta
ping: pi0.local: Name or service not known
ping: pi1.local: Name or service not known
ping: pi2.local: Name or service not known
ping: pi3.local: Name or service not known
Device Name Status Location
----------- ------ --------
Pi0 Unreachable
Pi1 Unreachable
Pi2 Unreachable
Pi3 Unreachable
Existe uma maneira de suprimir o "Nome ou serviço desconhecido" para a pesquisa do MDNS no ping? Eu já direciono a saída para / dev / null, então não vejo como ainda está dando saída.
Como alternativa, se você tiver uma maneira melhor / mais rápida / mais fácil / mais bonita de fazer essa verificação, adoraria ouvi-la.
Como foi brevemente apontado nos comentários , ping
está exibindo essa mensagem para stderr, que você não havia redirecionado. Faça isso com:
...
ping -c1 pi$i.local > /dev/null 2>&1
...
Tags hostname ping mdns io-redirection