tmux - 스크립트를 통해 창 분할 및 SSH를 여러 서버로 분할

tmux - 스크립트를 통해 창 분할 및 SSH를 여러 서버로 분할

현재 수동으로 수행하는 다음 단계를 자동화하고 싶습니다.

터미널에서 다음 단계를 수행합니다.

  1. tmux 시작
  2. 10개의 창으로 나누어져 있음
  3. 타일 ​​창
  4. 각 창으로 이동하여 SSH를 통해 서버에 연결하고 10회 반복합니다.
  5. 동기화 창

10개의 서로 다른 SSH 로그인 명령을 포함하여 이 모든 것을 스크립트로 작성하는 방법이 있습니까?

답변1

new-sessioncommand는 새 창에서 실행되는 명령을 split-pane사용합니다 . 배열에 문자열 목록이 있으면 다음을 수행할 수 있습니다 tmux.user@server

#!/bin/bash

ssh_list=( user1@server1 user2@server2 ... )

split_list=()
for ssh_entry in "${ssh_list[@]:1}"; do
    split_list+=( split-pane ssh "$ssh_entry" ';' )
done

tmux new-session ssh "${ssh_list[0]}" ';' \
    "${split_list[@]}" \
    select-layout tiled ';' \
    set-option -w synchronize-panes

split-pane그러면 현재 창을 분할하고 ssh목록에 있는 서버 중 하나에 실행되는 명령 목록이 생성됩니다 ssh_list. 첫 번째 서버(이 명령과 함께 사용할)를 제외하고 나열된 각 서버에 대해 이와 같은 명령을 만듭니다 new-session.

tmux마지막 명령은 새 세션을 생성하고 첫 번째 명령을 실행하여 ssh모든 분할을 수행하고 tiled레이아웃에 따라 창을 다시 정렬합니다(tmux대안은 설명서를 참조하세요.) 창 동기화를 활성화합니다.

모든 세션이 종료되면 세션이 tmux종료됩니다 .ssh


업데이트: 흥미롭게도 tmux(1)매뉴얼split-pane언급된 명령이 없습니다. 위의 코드는 여전히 작동하지만 이전 버전을 사용하는 경우 ( 2.4 이후 및 동의어 ) 로 tmux변경해야 할 수도 있습니다 .split-panesplit-windowtmuxsplit-panesplitpsplit-window

관련 정보