ターミナル/ sshを使用しているときに、マシンごとに異なる色のプロンプトが表示されますか?


11

私は仕事をするために絶えずsshする5つのマシンを持っています。間違ったボックスで間違ったコマンドを発行すると、ますますイライラします。幸いなことに、私はまだ悪いことをしていません。sshを使用しているマシンに基づいてプロンプトを異なる色で表示するハードコード可能なハックがあるかどうかを知りたいですか?デスクトップ1の青、ラップトップの紫、サーバーの赤など これは可能ですか?

現在、私はこのコマンドを使用しています。 -change-the-color-of-my-shell-prompt-under-linux-or-unix / しかし、明らかにsshで動作しません。

また、他のクールなbashのヒントがあれば、私の視力を緩和するのに役立ちます。マニュアルページを色付けするこのヒントを得ました。

http://linuxtidbits.wordpress.com/2009/03/23/less-colors-for-man-pages/


1
各コマンドの前のname@ ** server**行は、どのサーバーを使用しているかを伝えていませんか?これは、いくつかの慣れがかかりますが、その最高の既存の方法
TheLQ

ラップトップはどのオペレーティングシステムで動作しますか?
SamK

1
name @ serverは、Amazonクラウドのようなものを使用する場合は特に役に立ちません。これは、起動ごとに変更され、ボックスの目的や覚えやすい名前(user @ ip-xxxx)を伝えないためです。だからこの質問に+1 :)
ラフィクマニア

回答:


11

方法Iの使用は、ホスト名からホスト名の色を生成することです。選択できる色はそれほど多くないため、簡単にクラッシュが発生しますが、私が管理する少量のマシンには役立ちます。

hostnamecolor=$(hostname | od | tr ' ' '\n' | awk '{total = total + $1}END{print 30 + (total % 6)}')

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\[\e[${hostnamecolor}m\]\]\h \[\e[32m\]\w\[\e[0m\]\n$ '

最初の行は、マシンのホスト名から30(inc)から36(exc)の間の数値を生成します。2行目は、ユーザー名とパスを緑色(32)で、ホスト名を生成された色でプロンプトに適用します。

背景色は設定されていません。使用する端末の背景との衝突を避けるために、前景からシアン(36)と白(37)を除外します。


前景と背景の両方で同じ色を生成できますか?
クリスS

背景色は生成されません。ただし、生成された色が背景と一致する可能性があることは正しいです。白(37)とシアン(36)を除外します。これは、使用している端末の背景ではうまく機能しないためです。それを明確にするために答えを編集しました。
ダンミッドウッド

3

あなたは正しい軌道に乗っています。リンク先のページで詳細に説明した方法を使用し、ブログでその方法を正確に説明しました。WindowsボックスからPuTTYを使用し、CentOSサーバーから別のサーバーにSSHを使用して動作します。うまく動作せず、構文が正しいと確信している場合は、SSHクライアントに問題がある可能性があります。


こんにちは、.bashrcを変更しましたが、ローカルで色を変更できることを理解しています。私が望んだのは、別のコンピューターにsshすると、プロンプトの色が変わることでした。端末が自動的に認識しないことを知っているので、これを実現するためのポインターを探していました。
bcrawl

1
編集:はい、はい、そうです。.bashrcファイルが各コンピューターで変更されている場合、sshを実行すると、構成された色が表示されます。適切なファイルを編集していませんでした。ありがとう。解決したと考えてください。
bcrawl

2
この回答から直接解決策が得られた場合は、回答の左側にあるチェックマークのアウトラインをクリックして、これを承認済みの回答としてマークすることを検討してください。
ケビンM

1

私の仕事では、サーバーのさまざまな段階があります

生産ステージング開発

prodとして赤いプロンプトを使用し、ステージングのために緑のプロンプトを使用します。これで、すべてのステージングマシンがドメインにstgを持ちます。

したがって、prodは

web1.domain.com
web2.domain.com

ステージング/開発は

stg-web1.domain.com
stg-web2.domain.com
dev-web1.domain.com
etc

これは本当にredhat / centosでのみ機能します

しかし、prodサーバーの場合、次のものがあります。

/etc/sysconfig/bash-prompt-xterm

中は

export PS1="\[[\e[1;31m\]\u@\[\e[1;31m\]\h\[\e[0m\] \W] "

これでプロンプトが赤に変わります。/etc/bashrcに触れることはできず、他のすべての非prodマシンは使用する通常の前景色のままになります。

if [ "$PS1" ]; then
    case $TERM in
        xterm*)
                if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
                else
                        PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
                fi
                ;;

ifブロックがそこにあるはずです.. else部分の色を緑に変更しました。33は緑です


0

各マシンのbash.rc 変更して、異なるプロンプトカラーを表示できます。または、十分な特権がある場合は、sshd configを変更して、PermitUserEnvironmentディレクティブを介したユーザー環境の転送を許可します。


0

この要旨を含む、より包括的なホスト名文字列チェックサムベースのソリューションに取り組んでいます。256色の互換性。実際に各サーバーの特定の色を自分で決定することに興味がある場合は別として、これは「コンピューターの問題」の問題の1つであると思うので、チェックサムは良いアプローチです。

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