1

В настоящее время мои новые экземпляры Konsole уже появляются в сеансе tmux, будь то новый или подключенный, поскольку tmux потрясающий, и вы всегда должны быть внутри tmux, верно?

Тем не менее, это ставит меня в тупик, если я хочу подключиться к удаленно управляемому сеансу tmux. В настоящее время я вынужден планировать перед открытием нового окна Konsole, что этим окном не должно управлять локальное tmux, и скорее открыть простое приглашение bash, из которого я могу "ssh host_foo -e tmux attach".

В идеале я хотел бы иметь возможность отсоединить текущий клиентский процесс tmux и автоматически переходить к ssh и удаленному вызову tmux, который будет основываться на любой команде, выданной из сеанса. Я ожидаю, что взаимодействие будет работать следующим образом:

[me@local] ~ $ tmux attach
 .... pop into local tmux session ....
[me@local] ~/tmuxdir $ ls
 tmuxfile1 tmuxfile2
[me@local] ~/tmuxdir $ detach-and-ssh foo
 .... pops out of local tmux session ....
 .... and into remote tmux session on host foo ....
[me@foo] ~ $ ls 
 remotefile1 remotefile2
[me@foo] ~ $ tmux detach
 .... pops out of remote tmux session ....
 .... and back into local tmux session ....
[me@local] ~/tmuxdir $ 

У меня есть ощущение, что этого можно достичь, написав скрипт-обертку для вызова "tmux attach" в первую очередь, который будет искать команду для вызова при отсоединении. Это может быть записано в файл скриптом detach-and-ssh. Наконец, после того, как внешняя часть detach-and-ssh (то есть просто ssh) завершена, скрипт снова возвращается к tmux attach.

Пока одновременно выполняется только одна команда отсоединения, достаточно одной команды после отсоединения. Однако было бы лучше убедиться, что скрипт post-detach будет ограничен только этим клиентом tmux. Если у сеанса / клиента были какие-то сведения о конкретном PID-обертке, возможно, через переменные окружения или какую-либо другую переменную tmux, команда post-detach могла быть записана в PID-специфичный файл.

Кто-нибудь пробовал что-то подобное, и если да, то какие уроки были извлечены?

Примечание: пожалуйста, не предлагайте запускать все окна удаленного подключения под моим локальным tmux. Локальный tmux находится на переносном компьютере, и в этот момент все мои удаленные сеансы будут потеряны. Удаленные сеансы действительно должны управляться удаленным tmux.

Спасибо!

1 ответ1

1

Кроме того, вы можете вкладывать свои сессии tmux. Просто создайте новый экран в вашем локальном tmux, подключите ssh к удаленному foo и подключитесь к удаленному сеансу tmux. Отключение или уничтожение локального сеанса не приведет к удалению удаленного сеанса.

Примечание. Чтобы отправить команды tmux во вложенный сеанс, дважды нажмите Ctrl+B (или n раз, если у вас n вложенных сеансов).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .