2016-08-30 3 views
2

Я видел подобные вопросы в Интернете, но ни один из ответов не работает, надеясь, что новый запрос покажет ответ.ssh session не будет закрываться после запуска удаленной команды

Я пытаюсь запустить удаленный запрос в окне linux, который я могу решить, я остаюсь на связи с удаленным сервером.

Я установил -x в сценарии, поэтому я смотрю вывод. часть моего сценария ниже

ssh -tt $host.digital.domain.com << EOF 
sudo su - foo 
/apps/scripts/bar.sh 
exit 
EOF 

скрипт работает правильно

[[email protected] ~]$ [[email protected] ~]$ + rm -f '/tmp/files*' 

однако окно затем дает мне приглашение на удаленном компьютере, вместо того, чтобы выходить.

[[email protected] ~]$ 

я использовал -tT переключатель, как я получаю ошибку терминальной я также пытался убить Идентификатор, но это не работает либо. Единственный способ проработать сценарий - это «ctrl c» для выхода из удаленного сеанса.

Я попытался запустить ssh все это на одной линии, но это не сработало, возможно, из-за sudo, я не уверен.

Любые советы были бы замечательными.

благодаря

ответ

1

С помощью команды «су» вы открываете новую сессию Баш. Если вы пишете только один «выход», вы завершаете сессию пользователя foo. Для завершения сеанса, открытого ssh-соединением, вы должны написать другой «выход».

ssh -tt $host.digital.domain.com << EOF 
sudo su - foo 
/apps/scripts/bar.sh 
exit #Exit foo session 
exit #Exit ssh session 
EOF 

Выход:

[email protected]$ sudo su - foo 
[email protected]$ /apps/scripts/bar.sh 
[email protected]$ exit #Exit foo session 
exit 
[email protected]$ exit #Exit ssh session 
logout 
Connection to $host.digital.domain.com closed. 
+0

Привет fbohorquez, я попробовал это в его все еще удерживающий сессию. SSH -tt $ host.digital.domain.com << EOF Sudo су - Foo /apps/scripts/copy_files.sh выход выход выход EOF + гт/приложения/скрипты/files2copy + выход 0 Вы есть новая почта в/var/spool/mail/ams [foo @ host ~] $ Убито сигналом 2. – user3615267

+0

Так что это как-то связано с запуском скрипта и временем, которое требуется для завершения. Если скрипту не нужно запускать, то выход отлично работает --- [user @ host1 ~] $ [foo @ host1 ~] $ [foo @ host1 ~] $ [user @ host1 ~] $ Подключение к host1.digital.domain .com закрыто. Однако, если скрипт необходим, сеанс остается открытым. [foo @ host2 ~], поэтому мне нужно выработать задержку между запуском скрипта и командой exit – user3615267

+0

Вы можете использовать «sleep» для задержки между запуском скрипта и командой exit. Также вы можете использовать «wait» для ожидания завершения процесса. Возможно, вы можете использовать «setsid» для сценария запуска в другом сеансе bash или «nohup», поскольку не отправляйте сигнал SIGHUP при выходе. – fbohorquez

Смежные вопросы