はじめに
サーバアプリエンジニアにしてもインフラエンジニアにしても、サービス数×サーバ数×環境数みたいな感じで果てしなく長くなった.ssh/configにうんざりしている人が多いのではないでしょうか?
そんなあなたに、ちょっとだけ幸せを運ぶ小技を紹介します。
追記)
...だったんだけど、**こっちのほうが100倍便利!**なのでこちらへ
sshコマンドを.ssh/configのhostで補完させよう
.bash_profileにaliasに設定
下記の短い魔法のaliasを.bash_profileあたりに書いてやりましょう。
alias sshconfig='cat ~/.ssh/config | grep -i host | cut -d " " -f 2 | grep -E $@'
使用例
例えばこんなconfigを書いていた場合
# hoge service(develop)
Host dev-front-hoge
Hostname 192.168.10.10
User hogeop
Host dev-backoffice-hoge
Hostname 192.168.10.11
User hogeop
Host dev-api-hoge
Hostname 192.168.10.12
User hogeop
Host dev-ci-hoge
Hostname 192.168.10.13
User hogeop
# hoge service(production)
Host prd-front-hoge
Hostname ******
User ****
ProxyCommand ssh bastion-hoge -W %h:%p
... 略)
# fuga service(develop)
Host dev-front-fuga
Hostname ******
User ****
... 略)
developのサーバ一覧を表示したい場合は
$ sshconfig dev
とコマンドすると
dev-front-hoge
dev-backoffice-hoge
dev-api-hoge
dev-ci-hoge
...
ってな感じで表示されます。
微妙に名前覚えてないなぁって場合も
$ sshconfig d.*f.*hoge
んな感じで、コマンドすれば
dev-front-hoge
と表示されます。
一つに絞れる場合は、
$ ssh `sshconfig d.*f.*hoge`
とコマンドすれば、すぐそのサーバにsshログインできますね!
このaliasでエンジェルカードくらいのちょっとした幸せを運んでくれたのではないでしょうか。
おわりに
どうでもいい話ですが、Macのsedって大文字小文字を区別しないってどうやるんでしょう(+_+)
下記だと怒られるんですよね。。
cat ~/.ssh/config | sed -e 's/^HOST *//i'