我想自动化我目前手动执行的以下步骤。
在终端中,我执行以下步骤:
有没有办法编写所有这些脚本,包括 10 个不同的 ssh 登录命令?
Kus*_*nda 10
中的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
Run Code Online (Sandbox Code Playgroud)
这将创建一个split-pane命令列表,这些命令拆分当前窗格并运行ssh到列表中的服务器之一ssh_list。我们为每个列出的服务器创建一个这样的命令,除了第一个(我们将与new-session命令一起使用)。
最后的tmux命令创建一个新会话并运行第一个ssh命令,执行所有拆分,根据tiled布局重新排列窗格(请参阅tmux手册以获取替代方案),并启用窗格同步。
tmux一旦所有ssh会话都终止,会话将终止。
更新:有趣的是,tmux(1)手册没有提到split-panecommand。上面的代码仍然有效,但是如果您使用的是旧版本的tmux,则可能需要更改split-pane为split-window(自tmux2.4 起,split-pane并且splitp是 的同义词split-window)。
| 归档时间: |
|
| 查看次数: |
4297 次 |
| 最近记录: |