2013年9月26日木曜日

tmux起動時にsshで自動でログインしログイン後にコマンドを実行する方法

■コマンド
touch start_tmux.sh
vim start_tmux.sh
#!/bin/sh
name="mywindow"
tmux new-window -n ${name}

tmux split-window -v
tmux split-window -v -t ${name}.0
tmux split-window -v -t ${name}.1
tmux split-window -v -t ${name}.1

tmux select-layout even-vertical

tmux send-keys -t ${name}.0 'ssh host1' C-m
tmux send-keys -t ${name}.1 'ssh host2' C-m
tmux send-keys -t ${name}.2 'ssh host3' C-m
tmux send-keys -t ${name}.3 'ssh host4' C-m
tmux send-keys -t ${name}.4 'ssh host5' C-m

sleep 5

tmux send-keys -t ${name}.0 'password1' C-m
tmux send-keys -t ${name}.1 'password2' C-m
tmux send-keys -t ${name}.2 'password3' C-m
tmux send-keys -t ${name}.3 'password4' C-m
tmux send-keys -t ${name}.4 'password5' C-m

sleep 2

tmux send-keys -t ${name}.0 'hostname' C-m
tmux send-keys -t ${name}.1 'hostname' C-m
tmux send-keys -t ${name}.2 'hostname' C-m
tmux send-keys -t ${name}.3 'hostname' C-m
tmux send-keys -t ${name}.4 'hostname' C-m
tmux
Ctrl+b, d で一回デタッチする
sh start_tmux.sh

■説明
  • send-keysを使ってtmuxで作成したタブとペインに対してコマンドを送ります
  • 一回tmuxのセッションを作成してその後にtmuxのsend-keysを実行するシェルスクリプトを実行します
  • sshのコマンドを実行したあとに5秒スリープしてますが、すぐにsend-keysでパスワードを送ってしまうとうまく動作しないのでスリープを入れます
  • 他のコマンドを続けて実行する場合も時間がかかるコマンドを実行する場合はsleepを入れないとうまく動作しない時があります
  • サンプルのスクリプトはsshでログインしたあとにhostnameコマンドでホスト名を表示するだけですが、続けてsend-keysすることもできます
  • タブは1つ作成してその中で5つのペインに分割します
  • 横に分割ペインはそのあとに等間隔に整えます
  • C-mはEnterと同じ意味です

0 件のコメント:

コメントを投稿