¿Diferentes indicaciones de color para diferentes máquinas cuando se usa terminal / ssh?

11

Tengo 5 máquinas en las que constantemente trabajo para trabajar. Se está volviendo cada vez más frustrante cuando estoy emitiendo comandos incorrectos en cuadros incorrectos. Por suerte todavía no he hecho nada malo. ¿Quería saber si hay algún truco que pueda codificar que muestre mi mensaje en diferentes colores según la máquina en la que estoy usando ssh? ¿Como azul para escritorio1, púrpura para computadora portátil, rojo para servidor, etc.? es posible?

Actualmente estoy usando este comando export PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m" tomado de aquí http://www.cyberciti.biz/faq/bash-shell -change-the-color-of-my-shell-prompt-under-linux-or-unix / pero obviamente no funciona en ssh.

Además, si tienes otros consejos geniales para ayudarme a aliviar mi vista, será maravilloso. Recibí este consejo que colorea las páginas del manual.

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

bcrawl
fuente
1
La línea name@ ** server** antes de cada comando no transmite en qué servidor estás? Lleva un tiempo acostumbrarse, pero es la mejor manera existente
TheLQ
¿En qué sistema operativo está trabajando su computadora portátil?
SamK
1
name @ server es particularmente inútil cuando se usan cosas como la nube de Amazon, porque cambia cada arranque y no transmite el propósito de la caja o un nombre fácilmente memorable (usuario @ ip-xxxx). Entonces +1 para esta pregunta :)
Rafiq Maniar

Respuestas:

11

El método que uso es generar un color para el nombre de host a partir del nombre de host. No hay muchos colores para elegir, por lo que generará fácilmente conflictos, pero es útil para la pequeña cantidad de máquinas que administro.

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$ '

La primera línea genera un número entre 30 (inc) y 36 (exc) a partir del nombre de host de la máquina. La segunda línea lo aplica a la solicitud con nombre de usuario y ruta en verde (32) y el nombre de host en el color generado.

No se establecen colores de fondo, y excluyo el cian (36) y el blanco (37) del primer plano para evitar conflictos con los fondos de los terminales que utilizo.

Dan Midwood
fuente
Entonces, ¿puede generar el mismo color para el primer plano y el fondo?
Chris S
No se genera color de fondo. Pero tiene razón en que el color generado puede coincidir con el fondo. Excluyo el blanco (37) y el cian (36) porque no funcionan bien con los fondos terminales que uso. He editado la respuesta para aclarar eso.
Dan Midwood
3

Estás en el camino correcto. He utilizado el método detallado en la página a la que enlaza y detallé exactamente cómo en mi blog . Funciona para mí usando PuTTY desde un cuadro de Windows, y también SSH de un servidor CentOS a otro. Si no funciona para usted y está seguro de que tiene la sintaxis correcta, podría deberse a su cliente SSH.

dunxd
fuente
Hola, cambié el .bashrc y entiendo que puedo cambiar los colores localmente. Lo que quería era que cuando usara una computadora diferente, cambiara el color del mensaje. Sé que el terminal no lo sabrá automáticamente, así que estaba buscando punteros para que esto suceda.
bcrawl
1
Editar: ok, sí, tienes razón. Si el archivo .bashrc se cambia en cada computadora, cuando ssh, mostrará los colores configurados. No estaba editando el archivo correcto. Gracias. Considéralo resuelto.
bcrawl
2
Si esta respuesta lo llevó directamente a la solución, considere marcar esto como una Respuesta aceptada haciendo clic en el contorno de una marca de verificación a la izquierda de la respuesta.
Kevin M
1

En mi trabajo tenemos diferentes etapas de servidores

desarrollo de etapas de producción

Utilizo un indicador rojo como producto y verde para la puesta en escena. Ahora todas las máquinas de preparación tienen stg en el dominio.

Tan prod sería

web1.domain.com
web2.domain.com

Puesta en escena / Dev sería

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

Esto solo funcionará realmente para redhat / centos

Pero para servidores prod tengo lo siguiente en

/etc/sysconfig/bash-prompt-xterm

Por dentro es

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

Eso hará que el indicador se vuelva rojo. Ahora no puede tocar / etc / bashrc y todas las otras máquinas que no sean de producción mantendrán el color de primer plano normal que usa ... pero las hice verdes

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

Que si el bloque debería estar allí ... acabo de cambiar el color de la otra parte para que sea verde ... 33 es verde

Miguel
fuente
0

Puede modificar el bash.rc en cada máquina para darles diferentes colores de solicitud. O si tiene suficientes privilegios, modifique la configuración de sshd para permitir la transferencia del entorno del usuario a través de la PermitUserEnvironmentdirectiva.

teísta
fuente
0

Estamos trabajando en una solución más completa basada en la suma de comprobación de la cadena del nombre de host en esta esencia, incl. 256 colores de compatibilidad. Además del caso en el que realmente está interesado en determinar un color específico para cada uno de sus servidores, creo que este es uno de esos problemas "es para lo que tenemos computadoras", por lo que se determinan los colores "aleatorios" para usted en función de las sumas de comprobación deberían ser un buen enfoque.

lkraav
fuente