SSHログイン時にターミナルの配色を変更して本番環境でのミスを防ぐ
概要 自分はさくらのVPS上でKonbuやNBAMashのようなWebアプリを運用している。 最近、ローカルで操作しているつもりが実はVPS上で操作をしていて、うっかりコンテナを落としてしまうというミスを多発させてしまった。 そこで本番環境にSSHログインをした際にはターミナルの配色を変更して、視覚的に本番環境とローカル環境を差別化することで本番環境での誤操作を防ぐことにした。 方法 .bash_profileに以下のコードを追加した。 # ssh接続時に文字色と背景色を変更する関数 function ssh() { if [[ "$TERM_PROGRAM" == "vscode" ]]; then DEFAULT_COLOR="#CCCCCC" DEFAULT_BG_COLOR="#171717" elif [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then DEFAULT_COLOR="#000000" DEFAULT_BG_COLOR="#FFFFFF" fi # SSH接続時に文字色と背景色を変える echo -ne "\033]10;#FFFFFF\007" echo -ne "\033]11;#330000\007" # 実際にsshを実行 command ssh "$@" # 接続終了後に元の文字色と背景色に戻す echo -ne "\033]10;${DEFAULT_COLOR}\007" echo -ne "\033]11;${DEFAULT_BG_COLOR}\007" } コードを順を追って説明する。 まずは以下のようなsshの関数を書くことで、デフォルトのsshコマンドを上書きする。 引数は$@で取得できるので、ssh 引数1 引数2 ...のように実行したら、関数の内部でもちゃんとssh 引数1 引数2 ...のように実行される。 # ssh接続時に文字色と背景色を変更する関数 function ssh() { (...中略...) # 実際にsshを実行 command ssh "$@" (...中略...) } 次にデフォルトの文字色と背景色を変数に格納する。 ...