window内の行数、列数指定
超えると次のwindow作成
window内はコマンド同期
/etc/hostsからサーバー取得
# !/bin/bash
HOSTS_FILE="/etc/hosts"
row=$1
column=$2
hostname_prefix=$3
hostname=(`grep ${hostname_prefix} ${HOSTS_FILE} | awk '{ print $2 }' | grep ^${hostname_prefix}`)
tmux start-server
tmux new-session -d -s tmux-ssh
window_num=0
for ((i=0;i<${#hostname[@]};i++)); do
if [ `expr ${i} % \( ${column} \* ${row} \)` -eq 0 ]; then
window_num=`expr ${i} / \( ${column} \* ${row} \)`
window_name="tmux-ssh-window${window_num}"
tmux new-window -n ${window_name}
tmux set-window-option -t ${window_name} synchronize-panes on
tmux select-window -t ${window_name}
tmux split-window -h -t ${window_name}
tmux select-layout -t ${window_name} main-horizontal
pane0=${i}
elif [ ${i} -lt `expr ${pane0} + ${column}` ]; then
tmux split-window -h -t ${window_name}
tmux select-layout -t ${window_name} main-horizontal
else
row_num=`expr \( ${i} / ${column} \) % ${row} + 1`
column_num=`expr \( ${i} % ${column} \) + 1`
tmux select-pane -t `expr ${row_num} \* ${column_num} - 1`
tmux split-window -v -t ${window_name}
fi
tmux send-keys "ssh ${hostname[i]}" C-m
done
for i in `seq 0 ${window_num}`;do
tmux select-window -t tmux-ssh-window${i}
tmux kill-pane -t 0
done
tmux select-window -t tmux-ssh-window0
tmux kill-window -t 0
tmux attach-session -t tmux-ssh
例)/etc/hostsからdev-wap*のホスト名を取得し一斉ログイン。1window内は2行3列
./tmux_ssh 2 3 dev-wap