Estou escrevendo em um script reiniciando vários servidores. Após a reinicialização, quero "esperar" até que todos os servidores estejam novamente online. (Para simplificar, eu defini para mim on-line = pingável)
Então, para cada servidor que eu faço
ServerXY_W=1
echo -n "waiting for ServerXY ..."
while (($ServerXY_W == 1))
do
if ping -c 1 -w 0.2 192.168.123.123 &> /dev/null
then
echo "ServerXY is back online!"
ServerXY_W=0
else
echo -n "."
fi
done
O que eu esperaria (e gostaria) seria uma saída como por exemplo
waiting for ServerXY .................
ServerXY is back online!
onde os pontos .... apareceriam um por um.
Mas o que realmente acontece é primeiro, há apenas
waiting for ServerXY ...
por um tempo e quando o servidor está de volta eu recebo o último ponto e a última linha como
waiting for ServerXY ....
ServerXY is back online!
Por que o loop while é executado apenas duas vezes como uma vez com falha no ping e uma vez com êxito no ping? O que preciso alterar para adicionar mais pontos no loop while?
Eu fiz o teste também com um IP inexistente. Mas ficou preso com
waiting for NonExistentServer...
e nunca terminou, é claro. Mas a mesma pergunta, por que não ........
são adicionados?