Цель состоит в том, чтобы отправить команду 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.
Я не могу использовать привязку клавиш, потому что это будет выполняться изнутри скрипта.
Дистрибутив или версия Linux не указаны, поэтому в этом ответе предполагается относительно новая версия SSH.
Если сокет tmux "по умолчанию" используется на локальном хосте, но не на удаленном хосте, tmux должен просто работать, перенаправляя сокет unix с удаленного хоста:
ssh -R/tmp/tmux-$UID/default:/tmp/tmux-${REMOTE_UID}/default remote
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
Играя с TMUX_TMPDIR
окружающая среда может дать более прозрачный и безупречный опыт и обойти необходимость знать UID, но это зависит от требований и может быть излишним для одного скрипта.