Ich schreibe über ein Skript, das verschiedene Server neu startet. Nach dem Neustart möchte ich "warten", bis alle Server wieder online sind. (Um die Dinge einfach zu halten, habe ich sie online definiert = pingbar)
Also für jeden Server, den ich mache
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
Was ich erwarten würde (und mag), wäre eine Ausgabe wie z
waiting for ServerXY .................
ServerXY is back online!
wo die Punkte ... würden eins nach dem anderen erscheinen.
Aber was tatsächlich passiert, ist, dass es zuerst nur gibt
waiting for ServerXY ...
für eine Weile und wenn der Server zurück ist, bekomme ich den letzten Punkt und die letzte Zeile wie
waiting for ServerXY ....
ServerXY is back online!
Warum wird die while-Schleife nur zweimal ausgeführt, einmal mit fehlgeschlagenem Ping und einmal mit erfolgreichem Ping? Was muss ich ändern, damit mehr Punkte in der while-Schleife hinzugefügt werden?
Ich habe den Test auch mit einer nicht vorhandenen IP durchgeführt. Aber es blieb hängen
waiting for NonExistentServer...
und natürlich nie gekündigt. Aber die gleiche Frage, warum wird das nicht ........
hinzugefügt?