既存の ssh コマンドを自分で用意したシェルで上書きすることで実現できる。
既存の ssh は以下になっていると思う。
$ which ssh /usr/bin/ssh
次にシェルを用意する。
場所はどこでもいいけど、~/bin を作って、そこに配置するのがよさそう。
ssh を シェルで上書きするので、ファイル名は ssh じゃないとダメ。
$ cd ~ $ mkdir bin $ touch bin/ssh
作った ssh ファイルは以下のようにする。
#!/bin/sh set_bg () { osascript -e "tell application \"Terminal\" to set current settings of window 1 to settings set \"$1\"" } on_exit () { set_bg "ft" } trap on_exit EXIT #echo $@ case $@ in *myhost1* | *myhotst2* ) set_bg "Red Sands" ;; *) #echo 'not danger host' esac #echo 'please wait login ..........' /usr/bin/ssh "$@"
コマンドの引数($@)に myhost1, myhost2 が含まれている場合に
Red Sands というターミナルのテーマを適用している。
接続先のサーバから抜けた時は ft というテーマに戻している。
対象サーバのcase文と、適用するテーマ名をイジれば、好きな動作にカスタマイズできる。
別にcase文じゃなくてif文でもいいんだけど・・・。
ssh のコマンド自体は一番下の行にある「/usr/bin/ssh "$@"」で既存のsshに渡しているので、
ターミナルのテーマ適用をフックしているだけで、
ssh の動作自体は変わらない。
echo をコメントアウトしているのは
githubに接続する際に echo の出力があると以下のエラーが発生するから。
動作確認できたら echo の部分は消す or コメントアウトした方がいい。
fatal: protocol error: bad line length character: git@
あとは既存コマンドを起動せずに自作のsshファイルを起動させるように
basic で PATHを設定しておく。
$ cat ~/.bashrc PATH=/usr/local/Cellar/ctags/5.8_1/bin:$HOME/bin:$PATH
「$HOME/bin」の部分がそれにあたる。
bashrcを適用する。
$ source ~/.bashrc
これで ssh するとターミナルのテーマが変わるはず。