Разные цвета подсказок для разных машин при использовании терминала / ssh?

11

У меня есть 5 машин, в которые я постоянно работаю. Это становится все более расстраивающим, когда я выполняю неправильные команды на неправильных коробках. К счастью, я еще ничего плохого не сделал. Я хотел знать, есть ли какой-нибудь хак, который я могу жестко закодировать, который будет отображать мое приглашение в разных цветах в зависимости от компьютера, на котором я работаю с ssh? Например, синий для desktop1, фиолетовый для ноутбука, красный для сервера и т. Д.? Это возможно?

В настоящее время я использую эту команду export PS1 = "\ e [0; 31 м [\ u @ \ h \ W] \ $ \ e [м" взяты отсюда http://www.cyberciti.biz/faq/bash-shell -change-the-color-of-my-shell-prompt-under-linux-or-unix /, но он явно не работает в ssh.

Кроме того, если у вас есть другие полезные советы, которые помогут мне ослабить зрение, это будет замечательно. Я получил этот совет, который раскрашивает страницы руководства.

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

bcrawl
источник
1
name@ ** server** линии перед каждой командой не передать то , что сервер ваш дальше? Требуется некоторое привыкание, но это лучший из существующих способов
TheLQ
На какой операционной системе работает ваш ноутбук?
SamK
1
name @ server особенно бесполезен при использовании таких вещей, как облако Amazon, потому что он меняет каждую загрузку и не передает цели коробки или легко запоминающегося имени (user @ ip-xxxx). Так что +1 за этот вопрос :)
Рафик Маниар

Ответы:

11

Использование метод , который я должен генерировать цвет для имени хоста из имени хоста. Выбор цветов невелик, поэтому он легко создает конфликты, но это полезно для небольшого количества машин, которыми я управляю.

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) из имени хоста машины. Вторая строка применяет его к приглашению с зеленым именем пользователя и путем (32) и именем хоста в сгенерированном цвете.

Не заданы цвета фона, и я исключаю голубой (36) и белый (37) из переднего плана, чтобы избежать столкновений с фоном терминалов, которые я использую.

Дэн Мидвуд
источник
Таким образом, он может генерировать один и тот же цвет как для переднего плана, так и для фона?
Крис С
Цвет фона не генерируется. Но вы правы, что сгенерированный цвет может соответствовать фону. Я исключаю белый (37) и голубой (36), потому что они плохо работают с задним фоном терминала, который я использую. Я отредактировал ответ, чтобы прояснить это.
Дэн Мидвуд
3

Ты на правильном пути. Я использовал метод, подробно описанный на странице, на которую вы ссылаетесь, и подробно описал, как в своем блоге . Это работает для меня, используя PuTTY из окна Windows, а также SSH с одного сервера CentOS на другой. Если он не работает для вас, и вы уверены, что синтаксис правильный, это может быть связано с вашим SSH-клиентом.

dunxd
источник
Привет, я изменил .bashrc и понимаю, что могу менять цвета локально. Я хотел, чтобы при подключении к другому компьютеру цвет подсказки менялся. Я знаю, что терминал не будет знать автоматически, поэтому я искал указатели, чтобы это произошло.
bcrawl
1
Редактировать: хорошо, да, вы правы. Если файл .bashrc изменяется на каждом компьютере, при запуске ssh будут отображаться настроенные цвета. Я не редактировал нужный файл. Благодарю. Считайте, что это решено.
bcrawl
2
Если этот ответ привел вас непосредственно к решению, то пометьте его как «Принятый ответ», щелкнув контур галочки слева от ответа.
Кевин М,
1

На моей работе у нас разные стадии серверов

стадия развития производства

Я использую красную подсказку в качестве продукта и зеленую для постановки. Теперь все промежуточные машины имеют stg в домене.

Так что прод будет

web1.domain.com
web2.domain.com

Постановка / Dev будет

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

Это будет действительно работать только для redhat / centos

Но для прод-серверов у меня есть следующее в

/etc/sysconfig/bash-prompt-xterm

Внутри есть

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

Это заставит подсказку красного цвета. Теперь вы не можете коснуться / etc / bashrc, и все другие машины не будут сохранять обычный цвет переднего плана, который вы используете ... но я сделал их зелеными

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
                ;;

Это если блок должен быть там .. Я просто изменил цвет на остальной части, чтобы быть зеленым .. 33 является зеленым

Майк
источник
0

Вы можете изменить bash.rc на каждой машине, чтобы дать им разные цвета подсказок. Или, если у вас достаточно привилегий, измените конфигурацию sshd, чтобы разрешить передачу пользовательской среды через PermitUserEnvironmentдирективу.

теист
источник
0

Мы работаем над более полным решением, основанным на проверке контрольной суммы имени хоста, в этом разделе . 256 цветов совместимости. Помимо случая, когда вы на самом деле заинтересованы в определении конкретного цвета для каждого из ваших серверов, я чувствую, что это одна из тех проблем "это то, что у нас есть компьютеры", поэтому выбор "случайных" цветов для вас определяется на основе контрольные суммы должны быть хорошим подходом.

lkraav
источник