41 votos

Cómo hacer el esquema de color de apple ventana de terminal auto cambio cuando me ssh a un servidor específico

Cuando me ssh en un servidor de producción remotos quisiera el esquema de color de mi ventana de terminal para cambiar a algo brillante y aterrador, preferiblemente rojo, para advertir que estoy tocando un servidor miedo vivo.

¿Cómo lo hago automáticamente detecta que tienen así en algún lugar y si ese lugar está en una lista específica, cambiar el esquema de color?

Quiero actualizar el esquema de Terminal.app, no sé cómo sería hacerlo en un env puro linux/unix

49voto

Yurii Soldak Puntos 628

Poner la siguiente secuencia de comandos en ~/bin/ssh ( ~/bin/ era /usr/bin/ en el PATH):

#!/bin/sh

HOSTNAME=`echo $@ | sed s/.*@//`

set_bg () {
  osascript -e "tell application \"Terminal\" to set background color of window 1 to $1"
}

on_exit () {
  set_bg "{0, 0, 0, 50000}"
}
trap on_exit EXIT

case $HOSTNAME in
  production1|production2|production3) set_bg "{45000, 0, 0, 50000}" ;;
  *) set_bg "{0, 45000, 0, 50000}" ;;
esac

/usr/bin/ssh "$@"

El script de arriba, extractos de nombre de host de la línea "nombre de usuario@host" (se supone que el usuario de inicio de sesión para los hosts remotos con "ssh usuario@host").

Luego, dependiendo de host nombre de cualquiera de los conjuntos de fondo rojo (para servidores de producción) o fondo verde (para el resto). Como resultado de su ssh windows será con fondo de color.

Asumo aquí su fondo por defecto es negro, así que la secuencia de comandos vuelve el color de fondo de vuelta a negro al cierre de sesión de servidor remoto (consulte "captura de on_exit").

Por favor, tenga en cuenta sin embargo, este script no hace un seguimiento de la cadena de inicios de sesión ssh desde un host a otro. Como resultado, el fondo será de color verde en caso de inicio de sesión para el servidor de prueba en primer lugar, a continuación, inicio de sesión para la producción de la misma.

26voto

Chris Page Puntos 8523

Menos conocido de la Terminal es que se puede establecer el nombre de un perfil de configuración de un nombre de comando, que seleccionará a ese perfil cuando se crea un nuevo terminal, ya sea a través de Shell > Comando Nuevo... o Shell > Nueva Conexión Remota....

Por ejemplo, duplicar su perfil por defecto, el nombre "ssh" y establezca su color de fondo rojo. A continuación, utilice Comando Nuevo... para ejecutar ssh host.example.com.

También coincide con los argumentos, de modo que usted puede tener diferentes opciones para diferentes hosts remotos, por ejemplo.

5voto

Milhous Puntos 6362

Puede establecer la variable $PS1 en tu .bashrc.

red='\e[0;31m'
PS1="$\[${red}\]"

EDICIÓN: Para hacer esto, abra la Terminal. Entonces decir

#touch .bashrc

Luego puedes abrir .bashrc en textEdit o TextWrangler y añadir los comandos anteriores.

2voto

skymt Puntos 2156

Xterm-compatible con Unix terminales estándar secuencias de escape para configurar el fondo y los colores de primer plano. No estoy seguro de si la Terminal.aplicación de acciones; de lo que debería.

case $HOSTNAME in
    live1|live2|live3) echo -e '\e]11;1\a' ;;
    testing1|testing2) echo -e '\e]11;2\a' ;;
esac

El segundo número indica el color deseado. 0=por defecto, 1=rojo 2=verde, etc. Así que este fragmento, cuando se pone en un compartida .bashrc, le dará un fondo rojo en vivo servidores y un fondo verde en la prueba. También debe agregar algo como esto para restablecer el fondo al iniciar la sesión.

on_exit () {
    echo -e '\e]11;0\a'
}
trap on_exit EXIT


EDIT: Google se presentó un método para establecer el color de fondo usando AppleScript. Obviamente, esto sólo funciona cuando se ejecuta en la misma máquina como Terminal.app. Usted puede evitar que con un par de funciones de contenedor:

set_bg_color () {
    # color values are in '{R, G, B, A}' format, all 16-bit unsigned integers (0-65535)
    osascript -e "tell application \"Terminal\" to set background color of window 1 to $1"
}

sshl () {
    set_bg_color "{45000, 0, 0, 50000}"
    ssh "$@"
    set_bg_color "{0, 0, 0, 50000}"
}

Tendría que recordar a ejecutar sshl en lugar de ssh cuando se conecta a un servidor en vivo. Otra opción es escribir una función de contenedor para ssh que recorre sus argumentos conocidos en vivo de los nombres de host y se establece el fondo en consecuencia.

1voto

unexist Puntos 1647

¿Por qué no simplemente cambiando el prompt del shell cuando estas conectado via SSH? Hay variables de shell generalmente específicos: SSH_CLIENT, SSH_CONNECTION, SSH_TTY

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X