在 SIGPIPE 上终止 ssh 远程命令执行

在 SIGPIPE 上终止 ssh 远程命令执行
ssh remotehost "remote_command" | more

这将remote_command在 上执行remotehost,并对 的输出进行分页remote_command。如果用户不愿意滚动浏览所有页面,他可以q--MORE--提示符下按 。不幸的是,这不会停止 ssh 进程(和远程命令)。用户必须按^C才能真正终止进程。当用户按下qmore 时,终止并且 ssh 收到 SIGPIPE 但继续,因为remote_command没有完成执行。当用户退出寻呼机时,有什么方法可以终止 ssh 和远程执行?我不希望用户按 ^C,因为如果正在对本地文件进行 cat 操作,他就不需要这样做(事实上,他不知道这个命令是通过 ssh 隧道远程执行的)。

答案1

为什么不直接将命令更改为在远程服务器上调用更多命令?此外,您还必须强制使用 pty,正如 wfaulk 提到的那样。假设它是另一个 unix 系统,这应该没问题。即

ssh -t 名称@系统 “命令|更多”

仅供参考,少即是多:)

答案2

-t我还没有测试过这个,但是尝试通过将' '标志传递给来从远程机器获取 pty ssh

相关内容