Cambiando los colores de la Terminal al pasar a la máquina remota y viceversa

8

Al buscar una manera de cambiar automáticamente los colores de los terminales cuando se envía a máquina remota y volver a los colores predeterminados, al salir de la sesión ssh. Simplemente, quiero tener otros colores cuando estoy trabajando en la máquina remota.

¿Alguna idea?

ps: no quiero usar iTerm2, pero Terminal.app estándar

Kobame
fuente

Respuestas:

9

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 bash para la conexión, como:

alias ssweb='myssh Homebrew [email protected]'
alias ssmail='myssh Ocean [email protected]'

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

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

"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
jm666
fuente
¿Cómo harías esto para iterm2? ¡Gracias!
Cosu
Dejé de usar iTerm cuando estaba en "vim" después de seleccionar texto. de corte a cabo la selección en lugar de la copia ..; (Así que, por desgracia, no tengo ninguna idea acerca de la solución iTerm2.
jm666
¡Gracias! He estado buscando varias formas de hacer esto por un tiempo, pero su método es simple y flexible. Puntos de bonificación para 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 codificadas.
octern
2

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

No hay 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 inicia sesión en una gran cantidad de dispositivos que no son "servidores Unix" (como dispositivos de red; enrutadores, conmutadores, cortafuegos, etc.), debe usar sus shells y no puede instalar sus propias variables de shell. Entonces, aquí hay otra manera:

function ssh() {
  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 $@
}

Agrega esto a tu .bashrc.

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

Debe usar "ssh [email protected]" para esto y no "ssh -l user host.blah"

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

wawawawa
fuente