現在手動で行う次の手順を自動化したいと思います。
端末で次の手順を実行します。
- 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
リスト内のサーバーの1つに実行されるコマンドのリストが生成されます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