У меня есть 5 машин, на которые я постоянно использую ssh для работы. Когда я даю неправильные команды неправильным ящикам, становится все неприятнее. К счастью, я еще не сделал ничего плохого. Я хотел знать, есть ли какой-нибудь взлом, который я могу жестко запрограммировать, который будет отображать мое приглашение разными цветами в зависимости от машины, на которой я использую ssh? Например, синий для рабочего стола1, фиолетовый для ноутбука, красный для сервера и т. Д.? Это возможно?
В настоящее время я использую эту команду export PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m", взятую отсюда http://www.cyberciti.biz/faq/bash-shell-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/
В метод, который я использую заключается в генерации цвета имени хоста из имени хоста. На выбор не так много цветов, поэтому он может легко вызвать конфликты, но он полезен для небольшого количества машин, которыми я управляю.
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) из переднего плана, чтобы избежать конфликтов с фоном терминалов, которые я использую.
Ты на правильном пути. Я использовал метод, описанный на странице, на которую вы ссылаетесь, и подробно, как именно в моем блоге. У меня он работает, используя PuTTY из окна Windows, а также SSH с одного сервера CentOS на другой. Если это не работает для вас, и вы уверены, что синтаксис правильный, это может быть связано с вашим SSH-клиентом.
На моей работе есть разные этапы серверов
постановка производства
Я использую красную подсказку в качестве подсказки, а зеленую - для постановки. Теперь все промежуточные машины имеют stg в домене.
Так что прод будет
web1.domain.com
web2.domain.com
Постановка / разработка будет
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 зеленый
Вы можете изменить bash.rc на каждой машине чтобы дать им разные цвета подсказки. Или, если у вас достаточно прав, измените конфигурацию sshd, чтобы разрешить передачу пользовательской среды через PermitUserEnvironment
директива.
Мы работаем над более полным решением на основе контрольной суммы строки имени хоста в это суть вкл. Совместимость 256 цветов. Помимо случая, когда вы на самом деле заинтересованы в определении определенного цвета для каждого из ваших серверов самостоятельно, я считаю, что это одна из тех проблем «это то, что у нас есть компьютеры», поэтому получение «случайных» цветов, определенных для вас на основе контрольные суммы должны быть хорошим подходом.