回答:
ssh LocalCommandを使用して、ANSIエスケープシーケンスを発行して背景色を変更し、ホスト(またはホストパターン)ごとにセクションを設定して、リモートホストに対応する適切な色を選択できます。
本番サーバーが「prodで始まる」のような命名規則に従っている場合は、〜/ .ssh / configファイルで次のスニペットを試すことができます。
Host prod*
PermitLocalCommand yes
LocalCommand printf "\x1b[41m\x1b[2JPRODUCTION SYSTEM [%n]\n\n"
ワイルドカードパターンを使用するための便利な命名規則がない場合は、スペースで区切ってホスト名をリストするだけで済みます。他のさまざまな本番以外のサーバーについても、異なる色の値と文字列で追加のHostブロックを作成できます。
パターンに一致するホストに接続すると、対応するprintfがローカルで実行され、背景色が赤に変わります([41mは背景色として赤を選択し、[2Jパーツは更新された背景色で画面全体を再描画します。を参照してください。https://en.wikipedia.org/wiki/ANSI_escape_code for more more options)
このアプローチの最大の問題は、sshセッションの終了時に背景色が持続することです。切断時に実行されるLocalCommandに対応するものはありません(私が知っていることです)。sshのエイリアスまたはシェルラッパースクリプトはprintf "\x1b[0m"
、リセットとして呼び出すことができます。一方、LocalCommandを介して背景色を設定すると、sshがラッパースクリプトまたはエイリアスを介して実行されない場合でも、色が設定されます。
ls
エイリアスのようなコマンドls --color=auto
があり、リセットシーケンス '<ESC> [0m'が含まれている場合に発生する可能性があります。それを維持するには、おそらく、異なるgnome-terminalプロファイルをセットアップし、ラッパースクリプトルートに移動し、ホスト名に基づいてプロファイル名を選択し、起動する必要がありますgnome-terminal --profile=$PROFILE_NAME -e ssh $HOST &
ls --colour
。PS1にORリセットシーケンスがある場合、どちらか一方だけで以前のansiカラー設定が上書きされます。そこで、提案されたラッパースクリプトソリューションの実装について説明します。これも優れたアイデアです。メルシーボークー!