SSH удаленная команда выполнения остается без разъединения, когда закончите выполнять?

Я пытаюсь создать скрипт / команду, которая перезапустит нашу службу Asterisk / Elastix на нашей АТС. Сценарий в основном использует простую команду с открытым ключом автоматического входа, которая запускается из Ubuntu. 14.04LTS:

Сценарий команды:

ssh user@iphost 'service asterisk restart'

Но после того, как команда завершена и служба перезапущена, ssh остается и только после ctrl c выходит из строя.

Мой вопрос: как я могу завершить сеанс после завершения команды?

1
задан 16 July 2014 в 17:35

5 ответов

Попытайтесь перенаправить stdin, stdout, и stderr к/dev/null. Для объяснения см. https://serverfault.com/questions/36419/using-ssh-to-remotely-start-a-process.

1
ответ дан 16 July 2014 в 17:35

Попытайтесь использовать "здесь документ"

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

, Который должен работать.

0
ответ дан 16 July 2014 в 17:35

Вы могли просто фон это, как только это работает:

ssh user@iphost 'service asterisk restart &'

у меня есть подобная проблема с xinit - базирующийся новомодный сервис, что пожиратели ресурсов этап и потребности, вручную выходящие (не вредит Новомодному заданию), но да, wang & на конце и это должно вызвать его в фон.

, Если это причиняет Вам боль, существует много других опций как:

ssh user@iphost 'setsid service asterisk restart'
0
ответ дан 16 July 2014 в 17:35

Можно использовать одну из следующих команд вместо этого:

  • Перезапуски сервис и затем выходит:

    ssh user@iphost 'service asterisk restart; exit'
    
  • Перезапуски сервис и затем выходит на успехе:

    ssh root@iphost 'service asterisk restart && exit'
    
0
ответ дан 16 July 2014 в 17:35

использование опции -t (терминал) в команде ssh решает проблему также (лучше, чем перенаправление stdout, если вывод команды является чем-то полезным, которое мы хотим видеть):

ssh -t remoteip command 
0
ответ дан 7 October 2019 в 12:18

Другие вопросы по тегам:

Похожие вопросы: