概要
ついにその3まで来ました
相変わらずシェルですが今回はサーバのロールごとにwindowを開いてくれるように改修しました
環境
- CentOS 6.4 64bit Final
- Bash 4.1.2
- tmux 1.9a
スクリプト
コード
#!/bin/sh
#-- Configuration --#
name="session_name"
password="Please input your server's ssh password"
# key="/path/to/key.pem"
pane_define=(app db bat)
app=(apl001)
db=(db001 db002)
bat=(bat001)
#-- Configuration --#
tmux new-session -s ${name} -d
for j in ${pane_define[@]}
do
pane_name=${j}
eval ref="\${${pane_name}[@]}"
eval ref_count="\${#${pane_name}[@]}"
tmux new-window -t ${name} -n ${pane_name}
count=0
for i in ${ref}
do
echo "ssh ${i}"
# tmux send-keys -t ${pane_name}.${count} "ssh -i ${key} ${i}" C-m
tmux send-keys -t ${pane_name}.${count} "ssh ${i}" C-m
sleep 5
tmux send-keys -t ${pane_name}.${count} "${password}" C-m
last_count=`expr ${count} + 1`
if [ ${last_count} -ne ${ref_count} ]
then
tmux split-window
fi
(( count++ ))
done
tmux select-layout even-vertical
done
設定と動き
pane_define
に作成したいwindows名を作成したいだけ書きます- 記載したwindows名と同じ名称で配列を作成し、その配列にSSHするサーバ先を記載します
- 配列1つごとに1つのwindowが作成されて、サーバの分だけwindowsが分割されます
- 最後は平行に均等に並べ替えて完了です
- 公開鍵認証の場合は
key
のコメントを外してください name
には好きなセッション名を定義してOKです
イケてない点
- パスワードを1つしか設定しないので、SSHする先のサーバが全部同じパスワードでなければならない
0 件のコメント:
コメントを投稿