Предположим, следующий сценарий. У меня есть машины с именами от host1
до host4
к которым я хочу подключиться на одной панели каждая.
Я равномерно разделил окно Tmux на четыре панели, чтобы каждая из них могла разместить SSH-соединение с этими хостами.
Все хорошо, когда уже подключены и синхронизированы панели. Я могу выдавать команды, которые выполняются на всех хостах одновременно.
Однако теперь я подумал, что было бы неплохо иметь возможность подключиться к каждому хосту, выполнив точно такую же команду. Таким образом, я мог включить синхронизацию между панелями еще до подключения к этим хостам.
Увы, я не могу придумать метод, который работает. Что я попробовал, так это:
ssh root@host$(tmux run "echo '#{pane_index}'")
Идея заключается в том, что это должно разрешиться в ssh root@host1
через ssh root@host4
зависимости от области, в которой запускается команда.
К сожалению, результат был довольно неожиданным. Несмотря на то, что команда была выполнена (когда панель 1 была активной), все соединения были установлены с host1
. Очевидно, что переменная pane_index
ссылается на текущую активную панель, а не на панель, в которой выполняется команда.
Как я могу добиться соединения с host1
через host4
используя индекс панели (или что-то еще), выполняя точно такую же команду в каждой панели, вместо того, чтобы вводить отдельные команды?
Примечание: все индексы начинаются с 1, но, конечно, это можно сделать, даже если это не так, например, с помощью $((...))
в Bash.