我正在尝试使用一个shell脚本来简化以下模式

ssh somemachine
tmux a

我试过使用here docs作为Python subprocess with heredocs来发送“tmux a”命令
#!/bin/bash
ssh $1@$2 << 'ENDSSH'
tmux a
ENDSSH

不过,这不能用“stdin不是终端”。根据Pseudo-terminal will not be allocated because stdin is not a terminal中的建议,我做了以下修改
#!/bin/bash
ssh -tt $1@$2 << 'ENDSSH'
tmux a
ENDSSH

但现在我所有的捷径都被截获了。也就是说,CTRL+C将终止我的SSH会话,而不是将SIGINT转发给进程。有什么建议吗?

最佳答案

我认为您只需要-t标志,而不需要使用heredoc。使用heredoc意味着ssh进程没有终端作为其stdin(而是有heredoc),因此不能将其转发到远程端的伪终端。使用-tt标志强制在没有输入的情况下分配pts,这意味着按键进入本地进程而不是远程进程。

#!/bin/bash
ssh $1@$2 -t tmux a

为我工作

关于linux - 转发Ctrl + C&c。在“ssh -tt”上运行带有来自heredoc的命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48100620/

10-14 03:20