J'écris sur un script qui redémarre différents serveurs. Après le redémarrage, je veux «attendre» jusqu'à ce que tous les serveurs soient de nouveau en ligne. (Pour garder les choses simples, j'ai défini pour moi en ligne = pingable)
Donc, pour chaque serveur que je fais
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
Ce à quoi je m'attendrais (et aimerais) serait une sortie comme par exemple
waiting for ServerXY .................
ServerXY is back online!
où les points .... apparaîtraient un par un.
Mais ce qui se passe réellement, c'est d'abord qu'il n'y a que
waiting for ServerXY ...
pendant un certain temps et quand le serveur est de retour, je reçois le dernier point et la dernière ligne comme
waiting for ServerXY ....
ServerXY is back online!
Pourquoi la boucle while n'est-elle exécutée que deux fois comme une fois avec l'échec du ping et une fois avec le ping qui réussit? Que dois-je changer pour ajouter plus de points dans la boucle while?
J'ai également fait le test avec une adresse IP inexistante. Mais il s'est coincé avec
waiting for NonExistentServer...
et jamais terminé bien sûr. Mais la même question, pourquoi ne pas ........
être ajouté?