Prompt de bash coloreado si me conecto por SSH
Cómo sabéis del post anterior: http://mirblu.com/content/spotify-por-ssh necesito cambiar bastante a menudo entre dos equipos que tengo en casa. Muchas veces entre tanto ssh y scp me pierdo por lo que he tenido que pensar una forma de diferenciar los equipos en consola (si, soy uno de esos fr$%@s que tira mucho de consola)...
La idea que se me ocurrió fue colorear el prompt si me conectaba por ssh, de este modo:
- Tendría de color rojo el prompt si me conecto desde cualquier equipo al sobremesa.
- De color azul de cualquier equipo al portátil.
- De color blanco si la consola es local.
Lograr esto es muy sencillo, al final de nuestro ~/.bashrc añadimos:
if [ "`who -m|grep -v :0`" ]; then
export PS1="\[$(tput setaf 1)\]$PS1\[$(tput sgr0)\]"
fi
De este modo reutilizamos la variable PS1 ya definida, pero le añadimos códigos de colores.
Estos son los colores disponibles:
- 0: negro
- 1: rojo
- 2: verde
- 3: cafe
- 4: azul
- 5: morado
- 6: cyan
- 7: gris
En el caso del ejemplo estoy coloreando en rojo si te conectas desde un equipo externo al local.

Comentarios
Variable
Hola, está bien la solución, pero si se me permite un aporte sin importacia:
if $SSH_TTY; then
export PS1="\[$(tput setaf 1)\]$PS1\[$(tput sgr0)\]"
fi
Cuando nos conectamos por SSH se crean varias variables de entorno ($SSH_CONNECTION,$SSH_CLIENT y $SSH_TTY). Podemos aprovecharlas en vez de usar comandos. Ganamos en rapidez, eficiencia y limpieza del código.
Saludos
Perfecto
¡Me encanta!
No conocía esas variables, muchas gracias por el aporte :)
De todas formas, el script inicial que he posteado he tenido que modificarlo, porque cuando me conectaba desde tty (consola Ctrl+Alt+Fx) también me lo coloreaba, por lo que añadí un grep -v tty. Pero vamos, con tus variable no es necesario para nada.
¡Gracias de nuevo!