Tmux
tmux - 通過腳本將窗格和 ssh 拆分到多個伺服器
我想自動化我目前手動執行的以下步驟。
在終端中,我執行以下步驟:
- 啟動 tmux
- 分成 10 個窗格
- 平鋪窗格
- 導航到每個窗格並 ssh 進入伺服器,重複 10 次
- 同步窗格
有沒有辦法編寫所有這些腳本,包括 10 個不同的 ssh 登錄命令?
new-session
和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
command。上面的程式碼仍然有效,但如果您使用的是舊版本的tmux
,您可能需要更改split-pane
為split-window
(從tmux
2.4 開始,split-pane
並且splitp
是 的同義詞split-window
)。