tmux で列数固定で window を分割して複数サーバに SSH する

日頃の業務で複数台のサーバにログインしてオペレーションすることがあると思うんですが、cssh, i2css, tmux-css, xpanes 等便利なツールがあるし、tmux 関連の簡易スクリプトだけでも次のように色々見つかります。

tmux は even-horizontal, even-vertical, main-horizontal, main-vertical, tiled という layout が用意されていて、どのスクリプトもこのいずれかを使っています。ところが、6 台を超えると tiled layout では列が 3 分割になって横幅が足りないことがあるし、even-vertical layout だと横のスペースがもったいないしで、横の分割数を固定にできないものかと前々から思っていました。

というわけで作った

最初は普段使っているツールに PR を送ろうかと思ったんですが、この程度の内容であれば一から自分で書いた方が融通も効いて良さそうだったので一から書きました。

tmux-multi-ssh

次のような感じで PATH のとおったディレクトリに配置すると使えます。

curl -LO https://gist.githubusercontent.com/abicky/0760f604b06e9ec18a5354a8fd4d30c1/raw/76457c99edce6f064d981d2a2a5a03fc40be11b1/tmux-multi-ssh
chmod +x tmux-multi-ssh

--col option に 2 を指定すれば列数 2 で良い感じに分割されます。

Usage: tmux-multi-ssh [-c COL] [-r ROW] [--ssh-option SSH_OPTIONS] HOST [HOST2 ...]

  -c, --col int              The number of columns
  -h, --help                 Show this message
  -r, --row int              The number of rows
      --ssh-option string    Options passed to SSH

tmux-multi-ssh-demo

狭い画面で 8 台にログインしてもそれなりにスペースがあって良い感じですね!