Я пишу сценарий перезагрузки различных серверов. После перезагрузки я хочу «подождать», пока все серверы снова не подключатся. (Для простоты я определил для себя онлайн = pingable)
Так что для каждого сервера я делаю
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
То, что я ожидал (и хотел бы), было бы как например
waiting for ServerXY .................
ServerXY is back online!
где точки .... появится один за другим.
Но то, что на самом деле происходит, во-первых, есть только
waiting for ServerXY ...
на некоторое время и когда сервер вернулся, я получаю последнюю точку и последнюю строку, как
waiting for ServerXY ....
ServerXY is back online!
Почему цикл while выполняется только два раза, как один раз с ошибкой ping и один раз с успешной проверкой ping? Что мне нужно изменить, чтобы добавить больше точек в цикл while?
Я сделал тест также с несуществующим IP. Но это застряло с
waiting for NonExistentServer...
и никогда не прекращается, конечно. Но тот же вопрос, почему не ........
добавили?