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?
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 .
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
_
Essayez d'utiliser "here document"
ssh user@iphos << endexe
service asterisk restart
exit
endexe
Cela devrait fonctionner.
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'
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'