J'ai un script bash (sur la machine locale) qui a la ligne suivante
ssh root@remoteip "some commands; shutdown -r now"
#do other things
Cependant, après cette ligne (le serveur distant a été redémarré avec succès), le script bash complet se ferme ("faire d'autres choses" n'est pas exécuté).
Comment régler ce problème?
Exécutez la commande shutdown
en arrière-plan, cela a été efficace pour moi:
#!/bin/bash
ssh root@remote-ip "some-command > /dev/null; shutdown -r now &"
uname -a
some-command > /dev/null
: exécute some-command
et redirige la sortie vers /dev/null
, de sorte que je ne reçois aucune sortie comme vous l'avez dit.shutdown -r now &
: exécute la commande shutdown
en arrière-plan et laisse le shell pour obtenir d'autres commandes.uname
est mon #do other things
à des fins de test, qui sera exécuté juste après la panne du système distant; ) n'attend pas qu'il soit complet).Il existe également d’autres moyens d’atteindre ce résultat, par exemple, vous pouvez exécuter la commande entière en arrière-plan:
ssh root@remote-ip "some-command > /dev/null; shutdown -r now" &
Ou exécutez-le dans un sous-shell:
$(ssh root@remote-ip "some-command; shutdown -r now")
Bien que je suggère le premier, ce qui signifie exécuter la commande shutdown
en arrière-plan de la machine distante.