8 votos

Cambiando los colores de la Terminal cuando se hace ssh en una máquina remota y de vuelta

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

¿Alguna idea?

ps: no quiero usar iTerm2, sino la aplicación estándar Terminal.app

10voto

jm666 Puntos 4489

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 utilizar 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 hacer ssh en el servidor web, simplemente escribo ssweb en la Terminal y obtuve el perfil "Homebrew". Cuando la sesión de ssh termina, el AppleScript se establece de nuevo en el "Básico".

Los alias deben ir en tu $HOME/.profile o un archivo similar de bash-startup.

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

Por supuesto, se puede utilizar directamente (sin alias) como:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name

0 votos

¿cómo se hace esto para iterm2? ¡gracias!

0 votos

He dejado de usar iTerm cuando en "vim" después de seleccionar algún texto es recortar la selección en lugar de copiar.. ;( Así que, por desgracia, no tengo ninguna idea sobre la solución de iTerm2.

0 votos

Gracias. He estado buscando varias maneras de hacer esto por un tiempo, pero su método es simple y flexible. Puntos de bonificación para el desarrollo de un pequeño marco que puede tomar los perfiles y los comandos de diferentes alias, en lugar de esparcir alrededor de un montón de individuales scripts con conjuntos de preferencias codificadas.

3voto

warsong Puntos 620

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 estás entrando en un montón de dispositivos que no son "servidores Unix" (como dispositivos de red; routers, switches, firewalls, etc) entonces tienes que usar sus shells y no puedes instalar tus propias variables de shell. Así que, 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
}

Añade esto a tu .bashrc .

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

Para ello debe utilizar "ssh user@host.blah" y no "ssh -l usuario host.blah"

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

0 votos

Funciona muy bien con iterm2 y zsh gracias. He añadido bloques de comandos de guardar/restaurar

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X