🔥

iTerm2でssh接続した場合にプロファイルを変更する(trap付き)

に公開

iTerm2は、echo文で特定の制御文字を出力することでプロファイルを変更することができます。例えば『Servers』というプロファイルに変更する場合は、次のようにします。

echo -ne "\033]1337;SetProfile=Servers\a"

この仕組みを使用して、sshでどこかのサーバに接続している間は、通常と異なるプロファイルを適用することができます。

ssh-with-changing-profile.sh

まずは次のファイルを作成します。ここでは、ホームディレクトリのbin以下にssh-with-changing-profile.shという名前で作成しました。

~/bin/ssh-with-changing-profile.sh
#!/bin/bash

echo -ne "\033]1337;SetProfile=Servers\a"
trap 'echo -ne "\033]1337;SetProfile=Default\a"' ERR EXIT
/usr/bin/ssh "$@"

ポイントは、sshを終了した際にデフォルトのプロファイルに戻すecho文をtrapにしてる点です。こうしておけば、ssh先でexitした通常終了のケースはもちろん、sshが異常終了した場合でもデフォルトプロファイルに戻すことができます。

ファイルを作成したら、忘れずに実行権限を付けておきます。

chmod +x ~/bin/ssh-with-changing-profile.sh

プロファイル作成

続いて、iTerm2でServersという名前のプロファイルを作成します。ローカルとは違う緊張感を与えるため、危険な香りがする赤とかを背景色にするといいんじゃないでしょうか。
<img width="1030" alt="スクリーンショット 2018-01-20 19.50.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/32136/6420ef3a-34f2-5649-b019-e25b1d571609.png">

alias

最後に.bashrcなり.zshrcなりお好きな所にaliasを設定しておきます。

alias ssh='~/bin/ssh-with-changing-profile.sh'

以上で設定は完了です。あとはいつも通りにsshコマンドを叩けばオッケーです。接続先毎に適用するプロファイルを変更したい場合は、ssh-with-changing-profile.shでコマンドライン引数からゴソゴソすればいけると思います。

Discussion