サーバーをsshするときに端末の色を自動的に変更するにはどうすればよいですか?


14

os xターミナルウィンドウから別のサーバーに頻繁にログインしています。

ターミナルウィンドウを区別しやすくするために、異なるホストにカラースキームを割り当てたいと思います。これは自動的に実行できますか?

回答:


11

完全なソリューションを次に示します。サーバーのIPアドレスやドメインのリスト、およびそれらに必要な色を〜/ .server_colorsに保存します。

192.168.122.102、レッドサンズ
192.168.122.103、オーシャン
www.foo.com、Grass
foo.com、Grass

次に、この行を〜/ .profileに追加して、sshコマンドをハイジャックします。

エイリアスssh = "〜/ bin / safe_ssh $ 1"

次に、sshターゲットの@の後のものをリストと比較します。一致する場合は、AppleScriptを実行して画面を対応する色に変更します。〜/ bin / safe_sshは次のとおりです。

#!/ bin / bash
ip = `echo $ 1 | cut -d "@" -f2`
match = `cat〜/ .server_colors | grep $ ip | wc -l`
if [$ match -gt 0]
それから
    color = `cat〜/ .server_colors | grep $ ip | cut -f2 -d "、" `
    osascript〜/ bin / change_terminal_color.scpt "$ color" 2> / dev / null
fi
/ usr / bin / ssh $ 1

そして最後に、〜/ bin / change_terminal_color.scptがあります

実行時にargv
    ウィンドウ1の選択されたタブの現在の設定を(名前が(argvのアイテム1)である最初の設定)に設定するようにアプリケーション「ターミナル」に指示します
エンドラン

私はこのブログ投稿からこのコードのほとんどを取りました。


1
非常に素晴らしい。safe_sshスクリプトでは、SSHに追加のパラメーターをパススルーできるように、$ 1を$ @にする必要があります。おそらく、sshの後に端末をデフォルトに戻す呼び出しもあります。最後の1回の編集でこれはほぼ完璧になります。「@」を含まないSSHコマンドのサポートです。
nOw2


2

@muirbotのソリューションは、私にとって非常にうまく機能しています。それに少し改善を加えました。評判がよければ、彼の投稿の下に追加します。

行を置き換える

ip =echo $1 | cut -d"@" -f2
ip =echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

この変更により、「ssh -p 1111 userName @ host」などの追加の引数をsshコマンドに与えることができます。

正規表現では、単純なipv4アドレスとドメイン名を使用できます。

複数の引数をさらにサポートするには、最後の行を

/ usr / bin / ssh $ @


0

私はちょうど同じものを探していて、この記事を見つけました:

http://akrabat.com/php/osx-terminal-colours/

phpスクリプトを使用して、applescriptによって端末の色を変更します。サーバーごとに異なる色のマッピングを設定できます。私にとってはうまくいきますが、PHPのものをrubyに書き換えたいという衝動を感じます:)

fk


0

私は、異なるbg / fg色のxtermウィンドウでSSHを起動するスクリプトを使用します。設定が不要になるように、色スパンからホスト名のハッシュに基づいて色を選択します。

スクリプトはRubyで記述されていますhttps : //github.com/mickeyil/ssx


0

iTerm2を使用している場合は~/bin/ssh-host-color.shhttps://gist.github.com/jbochi/31f118b8ae2882a2c90fa46c46509b57 の内容で名前が付けられたファイルを作成します。

set_term_bgcolor(){
  local R=$1
  local G=$2
  local B=$3
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell the current window
    tell the current session
      set background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
    end tell
  end tell
end tell
EOF
}

if [[ "$@" =~ "production.example.com" ]]; then
  set_term_bgcolor 40 0 0
elif [[ "$@" =~ "qa.example.com" ]]; then
  set_term_bgcolor 0 40 0
fi

trap "set_term_bgcolor 0 0 0" EXIT

ssh $@

そして、~/.aliases.shファイルに次の行を追加します。

alias ssh="~/bin/ssh-host-color.sh $@"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.