2 votes

Attendez que la machine linux soit redémarrée.

J'ai un petit script pour installer sur ma machine distante une mise à jour.

Je voudrais redémarrer la machine à distance et si elle est redémarrée, continuer avec d'autres commandes. Voici ce que je fais actuellement :

ssh root@myMachine << COMMANDS_ISSUED
   ###... Tasks
   init 6
COMMANDS_ISSUED
sleep 180s
ssh root@myMachine << POST_REBOOT_COMMANDS
   ###.... More stuff
POST_REBOOT_COMMANDS

Existe-t-il un moyen plus élégant de le faire ? Comme envoyer un ping à la machine toutes les 5 secondes jusqu'à un maximum de 4 minutes ? Je joue avec quelques machines linux qui ont des temps de démarrage différents et si mon script continuait immédiatement après le redémarrage, cela pourrait me sécuriser un certain temps. (Note : je ne veux pas paralléliser l'exécution sur toutes les machines car je veux voir pour chaque machine si tout a bien fonctionné).

3voto

pdah Points 1114

Je dirais qu'il faut envoyer un ping à la machine jusqu'à ce qu'elle soit en marche.

while ! ping -c 1 192.168.1.1 &>/dev/null; do :; done

"c 1" enverra une demande à la fois, donc une par boucle. S'il n'y a pas de réponse, ping retournera false et la boucle continuera.

Le corps de la boucle est vide - vous pourriez y placer une courte commande de sommeil si vous le souhaitez. Sinon, les deux points " :", qui sont la [commande no-op][1], sont utilisés. C'est parce que vous ne pouvez pas avoir un corps de boucle vide.

-1voto

SparedWhisle Points 3770

Vous pouvez définir une crontab comme ceci :

@reboot script-to-execute

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X