【发布时间】:2017-11-24 14:40:07
【问题描述】:
我在 Linux 上从一个调用脚本运行 SSH,该脚本在执行时被移到后台。
SSH命令在远程win 10服务器上执行批处理命令。
调用脚本中的语法为:chkval=$(SSH domain\remotehost cmd arg2 arg2)。
只要我在前台运行脚本,这可以从命令行或调用脚本工作,但只要我将脚本置于后台或将其交给“at”以进行预定的 exec,SSH 命令失败并出现“更多令牌预期”错误。
脚本不会死,SSH 调用也不会死,但它永远不会执行远程命令。
【问题讨论】:
-
您是否尝试过
-t选项,即使在非交互式会话中也能获取 tty? -
是的,SSH 进程只是挂起,从不执行远程命令。我可以做一个 ps -ef |grep ssh 看看。
-
更重要的是,当我杀死调用进程时,它并没有杀死相关的ssh命令,我必须单独杀死它。
-
是的,那是因为信号不是通过 SSH 协议传输的。只有标准输入、标准输出和标准错误。给本地客户端的信号可能会杀死客户端,但不会将信号中继到远程主机上的服务器进程,因此服务器会继续运行并且不会向其子进程发出任何信号。
-
顺便说一下,感谢您的快速回复和建议。
标签: linux windows bash shell ssh