tmuxで複数サーバーの同時操作
本番環境同様にサーバー複数台でLB通してアクセスの来るステージ環境でサービスのある挙動のログを見たい時があった。
tailfでログ流しながら確認したいけどどのサーバーに来るかわからんと。
そのため全台確認するために同時操作がしたい。
とりあえず「tmux 複数サーバ」で検索して一番上に来たこの記事を参考にログインユーザー指定のオプションと使い方を追加したシェルスクリプトをつくってみた。
#!/bin/bash usage(){ echo './multi_ssh.sh [-u username] host ...' } while getopts "hu:" opts do case $opts in h) usage exit ;; u) usr=$OPTARG ;; esac shift shift done if [ -z "$usr" ];then usr=`whoami` fi if [ -n "$SESSION_NAME" ];then session=$SESSION_NAME else session=multi-ssh-`date +%s` fi window=multi-ssh ### tmuxのセッションを作成 tmux new-session -d -n $window -s $session ### 各ホストにsshログイン # 最初の1台はsshするだけ tmux send-keys "ssh ${usr}@${1}" C-m shift # 残りはpaneを作成してからssh for i in $*;do tmux split-window tmux select-layout tiled tmux send-keys "ssh ${usr}@${i}" C-m done ### 最初のpaneを選択状態にする tmux select-pane -t 0 ### paneの同期モードを設定 tmux set-window-option synchronize-panes on ### セッションにアタッチ tmux attach-session -t $session
おっしゃ、やりたいことはできた。
まあ、こんなみんな考えそうなことは誰かしらやってるわけで、見つけてしまいましたよ…