web-dev-qa-db-ja.com

ホスト名に基づいて端末の背景を変更できますか?

ホスト名に基づいて端末の背景色を変更したいのですが。これについての私の推論は、主に自分がどのサーバーにいるのかを思い出させるための特別な方法があるため、私は愚かなことをしません。

ローカルマシン上にいる場合は、標準の茄子の背景を使用することができますが、運用Webサーバーまたは指定できる他のホストにsshすると赤に変わりますか?

17
chris

Ssh/configのlocalcommandオプションを使用して、エイリアスが使用されているときはいつでもコマンドを実行できます。私が使う

Host hostname
    user myusername
    localcommand xtermcontrol --bg '#abc'

これはxtermcontrolとあなたの用語がxtermであるかどうかに依存します。おそらく他の用語のための他のアプリがあります。

このアプローチの唯一の問題は、sshを呼び出すときに発生することです。色の変更を元に戻すことは何もありません。私は関数をsshでラップすることでそれを実行しましたが、これには欠点もあります。

function ssh() {
  FG=$(xtermcontrol --get-fg)
  BG=$(xtermcontrol --get-bg)
  $(which ssh) "$@"
  xtermcontrol --fg="$FG"
  xtermcontrol --bg="$BG"
}
9
valadil

コマンドラインからgnome-terminal既存のウィンドウに新しいタブを追加 する機能はないようです。しかし、あなたが望むものを達成するためのいくつかのオプションがあります。

コマンドごとのプロファイル

SSHで接続するホストごとに新しいgnome-terminalプロファイルを作成します。定期的に接続するホストが数台しかない場合は、これが最も簡単な方法です。各プロファイルには、異なるタイトル、前景色、背景色、カスタムコマンド、およびその他の設定を定義できます。次に、File -> Open Tabを使用して、選択したプロファイルで新しいタブを開くことができます。

再利用可能なプロファイル

別のSSHホストに接続するたびに新しいウィンドウを開くために使用される新しいgnome-terminalプロファイルを作成します(これに基づいて AskUbuntuの回答 その Stefano =指摘)。これは、多くの異なるホストに頻繁に接続する場合に有効です。これにより、背景/前景色のみで異なるホストに接続されている異なるgnome-terminalウィンドウを区別できなくなりますが、ウィンドウごとに異なるタイトルが表示されます。

  1. Defaultプロファイルに基づいて新しいgnome-terminalプロファイル(File -> New Profile)を作成し、「RemoteHost」と呼びます(コマンドを簡単にするために、「RemoteHost」にはスペースを入れないでください)。
  2. [Title and Command]タブで、次の変更を行います:
    1. Initial title:から "リモートホスト"
    2. When terminal commands set their own titles:からReplace initial title
  3. [Colors]タブで、次のように変更します:
    1. Use colors from system themeのチェックを外します
    2. Build-in schemes:からCustom
    3. Text color:Background color:を選択した色に。一部のコマンド(lsなど)は出力に色を使用し、出力の読み取りを困難にする色を選択したくないことに注意してください。
  4. Closeボタンをクリックして、新しいプロファイルを保存します。
  5. これで、gnome-terminalコマンドを使用して、リモートSSHホストごとに新しいgnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehostウィンドウを開くことができます。 -tオプションはgnome-terminalウィンドウのタイトルを設定し、-xオプションはターミナルの残りのコマンドラインを実行します。キーストローク全体を短縮するためにaliasを作成することもできます。

コマンドライン

私は このブログエントリxdotoolおよびwmctrlコマンドを使用する次のスクリプトで見つけました(これらはデフォルトでUbuntuにインストールされていないため、インストールする必要がある場合がありますそれらを最初に)gnome-terminalを使用する CtrlShiftt 現在のgnome-terminalウィンドウで新しいタブを開くキーボードショートカット。特定のプロファイルで新しいタブを開き、いくつかのコマンドを実行するように変更できます。

#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
  /usr/bin/gnome-terminal "$@"
else
  pgrep -u "$USER" gnome-terminal | grep -qv "$$"
  if [ "$?" == "0" ]; then
    WID=`xdotool search --class "gnome-terminal" | head -1`
    xdotool windowfocus $WID
    xdotool key ctrl+shift+t
    wmctrl -i -a $WID
  else
    /usr/bin/gnome-terminal
  fi
fi

その他の

クリエイティブになって他のことを試すこともできます。

この スーパーユーザーの回答 は基本的に、「script-fu」アクロバットのビットを使用して、新しいウィンドウを開くために使用される一時的なgnome-terminalプロファイルを作成します。それはあなたの使用のために修正されるかもしれません。

リモートホストにSSH接続するときはいつでも、この StackOverflow Q&A およびより多くの "script-fu"アクロバットを使用して、gnome-terminalタイトルを動的に変更できます。背景/前景色の変化ほど目立たないでしょうが、常に標準のTerminalタイトルよりも優れています。

7
Dan Cruz

各sshセッションで新しいgnome-terminalウィンドウを使用する場合は、これはGnomeで機能します。

  1. 「リモート」と呼ばれる新しいプロファイルを(異なる背景色で)作成します

  2. 以下を.bash_aliasesまたは.bashrcに挿入します

    ### add to .bash_aliases, for differentiating between local and remote hosts 
    sshhelper() {
       gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1";
    }
    alias sshc=sshhelper
    

sshc remote-machinenew gnome-terminalセッションを「リモート」プロファイルで開きます。これにより、ローカルプロファイルとリモートプロファイルが区別されます。

複数のプロファイル/ホストに対応するには、複数のプロファイルを作成し、代わりに次のようなものを.bash_aliasesに配置します。

### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
    Host=`echo $1 | cut -d'@' -f2`

    case $Host in
        Production )  PROFILE="Red" ;;
        Test )        PROFILE="Green" ;;
        # ... if you have more cases ...
        *)           PROFILE="Default" ;;
    esac

    gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}

# alias ssh=sshhelper    # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper

これで、sshc Productionは「Red」プロファイルを使用して新しいセッションウィンドウを開き、sshc Testは「Green」プロファイルを使用して新しいセッションウィンドウを開き、他のホストは「Default」プロファイルを使用します。

6
peonicles

ここでスタック***サイトからすべての情報を収集することは、私がミントメイト+メイトターミナル(gnomeと同じ)で見つけた最も簡単なソリューションです。

  1. メイト端末で、異なる背景を持つ2番目のプロファイルを定義します。
  2. デフォルトのキーが機能するかどうかを確認しますAlt + PageDown/Alt + PageUpはプロファイルを変更し、背景も変更する必要があります。
  3. Sudo apt get install xdotool

/ etc/ssh/ssh_configを変更して、各sshセッションの確立後にプロファイルを変更できるようになりました。

Host *
  PermitLocalCommand yes
  LocalCommand xdotool key Alt+Page_Down

これで、ターミナルで各ssh接続が確立された後、プロファイルが変更され、不要なSQL更新を本番データベースに再度配置することがなくなります:)

ただし、ssh接続が閉じられた後にデフォルトのプロファイルに戻す簡単な解決策はありません。しかし、これは私には十分に見え、詳細については掘り出しませんでした。

2