web-dev-qa-db-fra.com

L'exécution de la commande à distance SSH reste sans déconnexion une fois l'exécution terminée?

J'essaie de créer un script/une commande qui redémarre notre service Asterisk/Elastix sur notre PBX. Le script utilise essentiellement une commande simple avec une clé publique de connexion automatique exécutée à partir d'Ubuntu 14.04LTS:

Le script de commande est:

ssh user@iphost 'service asterisk restart'

Mais une fois la commande terminée et le service redémarré, le SSH reste et seulement après ctrlc sa éclate.

Ma question est la suivante: comment puis-je terminer la session une fois la commande terminée?

1
user1289947

Essayez de rediriger stdin, stdout et stderr vers/dev/null. Pour une explication, voir https://serverfault.com/questions/36419/using-ssh-to-remotely-start-a-process .

1
user100464

utiliser l'option -t (terminal) dans la commande ssh résout également le problème (mieux que de rediriger stdout si la sortie de la commande est quelque chose d'utile que nous voulons voir):

_ssh -t remoteip command 
_
0
Asain Kujovic

Essayez d'utiliser "here document"

ssh user@iphos << endexe
   service asterisk restart
   exit
endexe

Cela devrait fonctionner.

0
YoMismo

Vous pouvez juste le mettre en arrière dès qu'il fonctionne:

ssh user@iphost 'service asterisk restart &'

J'ai un problème similaire avec un service upstart basé sur xinit, qui capte la scène et nécessite une sortie manuelle (ne nuit pas au travail Upstart), mais oui, wang un & à la fin et cela devrait forcer dans l'arrière-plan.

Si cela vous donne gyp, il y a n certain nombre d'autres options comme:

ssh user@iphost 'setsid service asterisk restart'
0
Oli

Vous pouvez utiliser l'une des commandes suivantes à la place:

  • Redémarre le service puis quitte:

    ssh user@iphost 'service asterisk restart; exit'
    
  • Redémarre le service, puis quitte en cas de succès:

    ssh root@iphost 'service asterisk restart && exit'
    
0
Louis Matthijssen