运行远程命令后,ssh会话不会关闭
问题描述:
我在网上看到过类似的问题,但答案都不起作用,希望新的请求能够揭示答案。运行远程命令后,ssh会话不会关闭
我想在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开关,我居然也得到了TTY错误 我也试图杀死PID但这并不工作要么。 进展脚本的唯一方法是让我'ctrl c'退出远程会话。
我已经尝试在一行上运行ssh,但是这没有奏效,可能是由于sudo,我不确定。
任何建议将是伟大的。
谢谢
答
用“su”命令打开新的bash会话。如果你只写一个“退出”,你只完成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.
嗨fbohorquez,我曾经尝试这样做的它仍然保留了会议。 SSH -tt $ host.digital.domain.com user3615267
因此,它与运行脚本以及完成所需时间有关。如果脚本不需要运行,那么出口完美工作--- [user @ host1〜] $ [foo @ host1〜] $ [foo @ host1〜] $ [user @ host1〜] $连接到host1.digital.domain .com关闭。但是,如果需要脚本,那么会话保持打开状态。 [foo @ host2〜]所以我需要在运行脚本和退出命令之间制定一个延迟 – user3615267
您可以使用“sleep”延迟运行脚本和退出命令之间的延迟。您也可以使用“等待”等待一个过程完成。 也许你可以在其他bash会话中使用“setsid”运行脚本,或者在退出时不要发送SIGHUP信号。 – fbohorquez