Cambiar los colores de la terminal cuando se conecta a la máquina remota y viceversa

Buscando una forma de cambiar automáticamente los colores de la terminal al ingresar a una máquina remota y volver a los colores predeterminados al salir de la sesión de ssh. Simplemente, quiero tener otros colores cuando estoy trabajando en la máquina remota.

¿Alguna idea?

pd: no quiero usar iTerm2, sino Terminal.app estándar

Respuestas (2)

Estoy usando lo siguiente.

Tener un comando de shell, llamado myssh, con contenido:

PROFILE="$1";shift;
DEF="Basic" #the default profile name
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${PROFILE}\""|osascript
ssh $@
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${DEF}\""|osascript

y use alias de bash para la conexión, como:

alias ssweb='myssh Homebrew user@web.example.com'
alias ssmail='myssh Ocean me@mail.example.com'

Cuando quiero ingresar al servidor web, simplemente escribo ssweben la Terminal y obtuve el perfil "Homebrew". Cuando finaliza la sesión de ssh, AppleScript vuelve a "Básico".

Los alias deben ir a su $HOME/.profile o un archivo bash-startup similar.

El "Homebrew", "Ocean", etc. son los perfiles de configuración de las preferencias de Terminal.app. También puede configurar diferentes fuentes, codificaciones, etc.

Por supuesto, puede usarlo directamente (sin alias) como:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name
¿Cómo harías esto para iterm2? ¡Gracias!
Dejé de usar iTerm cuando estaba en "vim" después de seleccionar un texto, se cortó la selección en lugar de copiar ... ;( Entonces, desafortunadamente, no tengo idea sobre la solución iTerm2.
¡Gracias! He estado buscando varias formas torpes de hacer esto por un tiempo, pero su método es simple y flexible. Puntos de bonificación por desarrollar un marco pequeño que puede tomar perfiles y comandos de diferentes alias, en lugar de esparcir un montón de scripts individuales con conjuntos de preferencias codificados.

Sé que ya hay un par de respuestas, pero aquí hay una alternativa:

No existe una forma general de cambiar el color de fondo, pero podemos usar una forma estándar para cambiar el título de la ventana. Si está iniciando sesión en muchos dispositivos que no son del "servidor Unix" (como dispositivos de red, enrutadores, conmutadores, cortafuegos, etc.), entonces debe usar sus shells y no puede instalar sus propias variables de shell. Entonces, aquí hay otra manera:

function ssh() {
  echo -ne '\033[22;0t' # save title
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "\033]0;${U:=$(whoami)}@${H%%.*}\007"
  unset H
  unset U
  /usr/bin/ssh $@
  echo -ne '\033[23;0t' # restore title
}

Agrega esto a tu .bashrc.

Básicamente, como las funciones y los alias son preferibles a buscar en la ruta, esto toma el comando ssh y usa el texto antes y después de "@" para configurar las variables HOST y USER que luego usa para repetir un código ASCII que es reconocido por el terminal y se utiliza para establecer el título.

Debe usar "ssh usuario@host.blah" para esto y no "ssh -l usuario host.blah"

Si no proporciona un nombre de usuario, lo establecerá como su nombre de usuario actual (obviamente, si está usando un .ssh/config personalizado (que uso mucho), entonces esto no será exacto, pero creo que es lo suficientemente bueno ser útil.

Funciona muy bien con iterm2 y zsh gracias. Agregué bloques de comandos de guardar/restaurar