SSHホスト名に基づいて端末の背景を自動的に変更するには?

SSHホスト名に基づいて端末の背景を自動的に変更するには?

SSH経由で接続したホスト名に基づいて、ターミナルウィンドウの背景色をプログラム的に変更する方法は?

つまり、本番ハードウェアのライブ組み込みシステムにSSHで接続すると、端末の背景が赤に変わります。つまり、「現在使用中のサーバーに対する認識を維持する」ためです。 PS1のホスト名だけでは必ずしも十分ではありません。

私はgnome-terminalを使用しますが、Linuxで動作するすべてのソリューションを受け入れます。

答え1

ssh LocalCommandを使用してANSIエスケープシーケンスを実行して背景色を変更し、各ホスト(またはホストモード)にセクションを割り当てて、リモートホストに対応する適切な色を選択できます。

本番サーバーが「prodで始まる」などの命名規則に従う場合は、~/.ssh/configファイルで次のコードを試してみてください。 Host prod* PermitLocalCommand yes LocalCommand printf "\x1b[41m\x1b[2JPRODUCTION SYSTEM [%n]\n\n"

ワイルドカードパターンを使用するための便利な命名規則がない場合は、ホスト名をスペースで区切って一覧表示できます。他のさまざまな非プロダクションサーバーに対して、さまざまな色の値と文字列を使用して追加のホストブロックを作成することもできます。

パターンに一致するホストに接続した後、そのprintfがローカルで実行され、背景色を赤に変更します([41mは背景色として赤を選択し、[2Jは更新された背景色で画面全体を部分的に再描画します。) )。https://en.wikipedia.org/wiki/ANSI_escape_codeもっと選択)

このアプローチの最大の問題は、sshセッションを終了すると背景色が持続することです(私の知る限り)。 SSHエイリアスまたはシェルラッパースクリプトをprintf "\x1b[0m"リセットとして呼び出すことができます。一方、LocalCommandで背景色を設定すると、sshがラッパースクリプトやエイリアスで実行されていなくても色が設定されます。

関連情報