かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

tmux-cssh で複数台ホストを管理する

環境

  • mac OSX
  • tmux-cssh

複数台のサーバを同時に操作したい

f:id:kawa_xxx:20170505173733p:plain:w250

10台近くのLinuxサーバを同時にアップデートしたいとか、ちょっと設定を確認したいとかに一台一台SSHしてなんてめんどくさいですよね。 ClusterSSHXを使おうと思ったのですが、だいぶ更新が止まっていたので、普段から使い慣れている tmux で複数台同時SSHが出来る tmux-cssh を使うことにしました。

インストール自体は HomeBrew で一発です。

$ brew install tmux-cssh

サーバへの接続方法は以下の通りです。

$ tmux-cssh -sc 192.168.10.10 -sc 192.168.10.11 (省)

でもこれを毎回接続したい台数分打つのはめんどくさいですよね。そんなときはホームディレクトリに .tmux-cssh というファイルを作って以下のように記述すればOKです。

サンプルとして2台までしか書いていませんが、改行を入れずに書けばもっと多くの台数へ同時接続することが出来ます。改行を入れてしまうと別のサーバ郡として認識されますので注意が必要です。

台数が多くなるとどうしても横に長くなり見づらくなるので、適切にグルーピングしてやるのがおすすめです。

hoge: -sc 192.168.10.10 -sc 192.168.10.11 (略)

で、以下のコマンドを入力すれば接続出来ます

tmux-cssh -sc hoge

同時に接続しているサーバの中で1台だけにコマンドを送信したい

初期設定のままだと、すべてのサーバ(つまりすべてのpanel)に入力した文字列が送信されてしまいます。もし特定の一台(一つのpanel)だけに入力文字を送信したい場合は、 tmux の設定ファイル (.tmux.conf) をひらき、以下のようなキーボードショートカットを設定します。

bind e setw synchronize-panes on
bind E setw synchronize-panes off

これで ctrl + b, e を入力すると、すべてのサーバ(panel)に入力文字が送信されるようになり、 ctrl + b, E を入力すると、選択されているサーバ(panel)にのみ入力文字が送信されるようになります。

これで、同じような複数台のサーバ管理も怖くない!

参考文献