web-dev-qa-db-ja.com

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

Sshを実行するホスト名に基づいて、ターミナルウィンドウの背景色をプログラムでどのように変更できますか?

つまり、実稼働ハードウェアのライブ組み込みシステムにsshを使用する場合、端末の背景を赤に変更して、現在使用しているサーバーの「認識を維持する」ようにします。 PS1にホスト名だけを用意するだけでは必ずしも十分ではありません。

Gnome-terminalを使用していますが、Linuxで実行可能なソリューションを受け入れます。

9
Mtl Dev

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 より多くのオプションの場合)

このアプローチの最大の厄介な点は、sshセッションの終了時に背景色が持続することです。切断時に実行されるLocalCommandに対応するものはありません(私が知っていることです)。 sshのエイリアスまたはシェルラッパースクリプトはprintf "\x1b[0m"リセットとして。一方、LocalCommandを介して背景色を設定すると、sshがラッパースクリプトまたはエイリアスを介して実行されない場合でも、色が設定されます。

7
PKapp