我正在尝试构建一个脚本/命令,用于重新启动 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
使用选项-t
ssh 命令中的 (终端) 也解决了该问题(如果命令输出是我们想要看到的有用的东西,那么比重定向 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'