Tmux在bash脚本中循环遍历数组

时间:2014-03-22 11:26:43

标签: bash shell tmux

我有一个复杂的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

0 个答案:

没有答案