web-dev-qa-db-fra.com

Le script bash se ferme de manière inattendue lors du redémarrage du serveur distant via ssh

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?

3
aye

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.

1
Ravexina