目标是从远程服务器向本地运行的 tmux 发送 tmux 命令。不要运行到不同的 tmux 实例。
在 tmux 中,我们通过 ssh 连接到不运行 tmux 的服务器
local>tmux send-key C-p # works
local>ssh user@remote
user@remote> tmux send-key C-p # this will try to find tmux instance on remote. but we want to send it the local instead.
Run Code Online (Sandbox Code Playgroud)
我不能使用键绑定,因为这将从内部脚本运行。
未指定 Linux 发行版或版本,因此此答案假定 SSH 版本相对较新。
如果 tmux“默认”套接字在本地主机上使用,但不在远程主机上使用,则 tmux 应该通过从远程主机转发 unix 套接字来工作:
ssh -R/tmp/tmux-$UID/default:/tmp/tmux-${REMOTE_UID}/default remote
Run Code Online (Sandbox Code Playgroud)
REMOTE_UID应手动设置为远程用户的 UID,但UID通常在环境中自动设置。
理想情况下,应选择唯一的(非默认)tmux 套接字名称以避免冲突:
local> tmux -L foo
remote> ssh -R/tmp/tmux-$UID/foo:/tmp/tmux-${REMOTE_UID}/foo remote
remote> tmux -L foo send-key C-p
Run Code Online (Sandbox Code Playgroud)
尝试使用TMUX_TMPDIR环境可能会提供更透明和更精致的体验,并解决必须知道 UID 的问题,但这取决于需求,并且对于脚本来说可能有点过分了。
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |