현재 수동으로 수행하는 다음 단계를 자동화하고 싶습니다.
터미널에서 다음 단계를 수행합니다.
- tmux 시작
- 10개의 창으로 나누어져 있음
- 타일 창
- 각 창으로 이동하여 SSH를 통해 서버에 연결하고 10회 반복합니다.
- 동기화 창
10개의 서로 다른 SSH 로그인 명령을 포함하여 이 모든 것을 스크립트로 작성하는 방법이 있습니까?
답변1
new-session
command는 새 창에서 실행되는 명령을 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-pane
split-window
tmux
split-pane
splitp
split-window