~/.ssh/config
を次のように書いているとする。
実際開発していると複数台アプリケーションサーバーがあってミドルウェアが入っているサーバーがあってとか気づくとたくさんのサーバーのconfigが追加されている。
Host bastion HostName www.xxx.yyy.zzz User hoge IdentityFile ~/.ssh/hoge.pem Host server1 HostName xxx.xxx.xxx.xxx User fuga IdentityFile ~/.ssh/fuga.pem ProxyCommand ssh -CW %h:%p bastion Host server2 HostName yyy.yyy.yyy.yyy User piyo IdentityFile ~/.ssh/piyo.pem ProxyCommand ssh -CW %h:%p bastion
だいたいはhistoryからgrepしたりするんだけど、あのサーバーなんだっけなぁーとかたまにしか使用しないのって忘れてしまって~/.ssh/config
を見たりする。
その作業が意外と多いので止めたいと思った。
使用するのはおなじみのpeco!!
「pecoは標準入力から受けた行データをインクリメンタルサーチして選択した行を標準出力に返す」
ただこれだけのシンプルなものです。
今回はHostだけを取り出したいので次のようなコマンドを実行する。
*
を外しているのはHost 127.*
のようなものを外すためです。
$ grep "^Host " ~/.ssh/config | sed s/"^Host "// | grep -v "*" bastion server1 server2
あとはこれをpecoに突っ込んで選択したものをsshにかける。
ssh $(grep "^Host " ~/.ssh/config | sed s/"^Host "// | grep -v "^\*$" | peco)
最後に任意のaliasをはってあげれば完了!!
これで少し便利になった。
最後に
peco便利だ