Cambiando los colores de los terminales cuando se coloca en la máquina remota y vuelve

8

Buscando una manera de cambiar automáticamente los colores de los terminales al enviarlos a la 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

    
pregunta kobame 11.07.2011 - 14:05

2 respuestas

9

Estoy usando lo siguiente.

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

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

Cuando quiero ssh en el servidor web, simplemente escribo ssweb en la Terminal y obtuve el perfil "Homebrew". Cuando finaliza la sesión ssh, AppleScript vuelve a "Basic".

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

"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, puedes usarlo directamente (sin alias) como:

myssh Pro [email protected]
       ^        ^
       |        ssh command arguments
       terminal profile name
    
respondido por el jm666 11.07.2011 - 14:12
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 está iniciando sesión en una gran cantidad de dispositivos "Servidor de Unix" (como dispositivos de red, enrutadores, conmutadores, cortafuegos, etc.), entonces tiene que usar sus shells y no puede instalar sus propias variables de shell. Entonces, aquí hay otra forma:

function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "3]0;${U:=$(whoami)}@${H%%.*}
function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "3]0;${U:=$(whoami)}@${H%%.*}%pre%7"
  unset H
  unset U
  /usr/bin/ssh $@
}
7" unset H unset U /usr/bin/ssh $@ }

Agregue esto a su .bashrc .

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

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

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

    
respondido por el wawawawa 01.08.2011 - 14:25

Lea otras preguntas en las etiquetas