我有一个复杂的bash脚本,其中一个hist部分需要运行tmux会话并监视远程服务器。服务器列表包含在数组$ {servers [@]}中。因此需要为数组中的每个主机启动ssh会话并执行screen -r。
应在水平划分的新窗格中启动每个新的主机ssh会话。并且一个窗格应该是垂直的并具有以下控件:kill所有tmux会话并退出到主终端窗口而不会杀死tmux会话。
终端窗口假设看到:
| host0 | host1 | host2| host3...
| | | |
| | | |
| | | |
---------------------------------
[Q]uit all tmux sessions [Enter] to back in terminal
--------------------------------
bash脚本中的一个函数,它假设在下面执行这些操作,但它缺少控件而没有测试工作。
#!/bin/bash
servers[0]="host0"
servers[1]="host1"
servers[1]="host2"
SESSIONNAME="monitoring"
tmux has-session -t $SESSIONNAME $> /dev/null
if [ $? != 0 ]; then
tmux new-session -s $SESSIONNAME -n monitor -d
for host in "${servers[@]}"; do
tmux split-window -t $SESSIONNAME:0 -h
tmux send-keys "ssh root@$host" C-m
tmux send-keys 'screen -r' 'C-m'
done
fi
tmux select-window -t $SESSIONNAME:0
tmux attach -t $SESSIONNAME