SSH 远程命令执行完成后不会断开连接并持续执行吗?

SSH 远程命令执行完成后不会断开连接并持续执行吗?

我正在尝试构建一个脚本/命令,用于重新启动 PBX 上的 Asterisk/Elastix 服务。该脚本基本上使用从 Ubuntu 14.04LTS 运行的带有自动登录公钥的简单命令:

命令脚本为:

ssh user@iphost 'service asterisk restart'

但是在命令完成并且服务重新启动之后,ssh 仍然存在,并且只有在ctrlc其爆发之后才会消失。

我的问题是,如何在命令完成后终止会话?

答案1

尝试将 stdin、stdout 和 stderr 重定向到 /dev/null。有关说明,请参阅https://serverfault.com/questions/36419/using-ssh-to-remotely-start-a-process

答案2

使用选项-tssh 命令中的 (终端) 也解决了该问题(如果命令输出是我们想要看到的有用的东西,那么比重定向 stdout 更好):

ssh -t remoteip command 

答案3

尝试使用“此处文档”

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

那应该可行。

答案4

您可以使用以下命令之一:

  • 重新启动服务然后退出:

    ssh user@iphost 'service asterisk restart; exit'
    
  • 重新启动服务然后成功退出:

    ssh root@iphost 'service asterisk restart && exit'
    

相关内容