Cómo cambiar los colores del terminal al conectarse a hosts SSH

Cómo cambiar los colores del terminal al conectarse a hosts SSH

Entonces, ¿quieres cambiar los colores de los terminales y restablecerlos al salir?

Es posible gracias a .ssh/config, alias, ysetterm

Respuesta1

  • .bash_aliases:
    function ssh_alias() {
      ssh "$@";
      setterm -default -clear rest;
      # If `-clear rest` gives error `setterm: argument error: 'rest'`, try `-clear reset` instead 
    }
    
    alias ssh=ssh_alias
    
  • /etc/ssh/ssh_config:
    # Ensure this line exists:
      PermitLocalCommand yes
    
  • .ssh/config:
    Host your.production.host
      User root
      LocalCommand setterm -term linux -back red -fore white -clear rest
    

En Bash, ahora puedes:

some command

# all in default colors:
  ssh your.production.host

# colors changed:
# ....

exit
# colors changed back! yeea!


Alternativa a setterm:

Si está utilizando gnome-terminal, u otro xterm, y se siente frustrado por las opciones de color limitadas de setterm, y/o sus settermcambios están siendo anulados por códigos de color en su símbolo del sistema [ $PS1], en lugar de settermhacerlo, es posible que desee utilizar xtermcontrol, como se demuestra enesta respuesta.

  • Por ejemplo, xtermcontrol --bg '#600'hará que el fondo del terminal sea de color rojo oscuro, aunque es posible que tengas que instalarlo xtermcontrolantes de usarlo.(por ejemplo, sudo apt install xtermcontrolen sistemas basados ​​en Debian)

Respuesta2

(Lea gaRexrespuestaprimero)

settermha cambiado los argumentos en versiones recientes:(más información: man setterm)

  • .bash_aliases:
    function ssh_alias() {
      ssh $@;
      setterm --default --clear all;
    }
    
    alias ssh=ssh_alias
    
    Aún puedes usar --clear resty recargar .bash_aliasesa través deexec bash

  • .ssh/config:
    Host myproject.pro
      HostName myproject.com
      User root
      IdentityFile ~/.ssh/myproject
      LocalCommand setterm --term linux --background white --foreground black --clear all
    

Respuesta3

Necesitaba esto para conectarme a mis propias computadoras. Lo que hice fue tan simple como agregar este fragmento a mi .bash_profile(que está en mis archivos de puntos, por lo que de todos modos termina en la mayoría de mis computadoras):

[ -n "$SSH_CONNECTION" ] && echo -e "\033]11;#336699\a"

Puede cambiar el 336699color hexadecimal que desee.

Respuesta4

En Apple Mac/OSX, settermno está disponible, pero puedes usarlo osascriptcon un pequeño script de shell:

#!/bin/sh

DEFAULT_SCHEME=Basic
SCHEME=${1:-$DEFAULT_SCHEME}
SAFE_SCHEME=\"${SCHEME//\"/}\"  # sanitize user input

/usr/bin/osascript <<EOF
tell application "Terminal"
  set current settings of window 1 to settings set $SAFE_SCHEME
end tell
EOF
  • Esto requiere un único argumento correspondiente a uno de los esquemas de color terminalque conoce.(por ejemplo, océano)y puede invocarse en lugar de settermlas respuestas anteriores, recordando agregarlo también para ~/.bash_aliasesque el terminal vuelva al esquema de color original cuando salga de la sshsesión.

El perfil predeterminado bashen OSX no tiene origen .bash_aliases, por lo que es posible que deba agregar algo como esto a ~/.bash_profile:

if [ -f ~/.bash_aliases ]; then
  source ~/.bash_aliases
fi
  • Para obtener información adicional sobre cómo cambiar los colores del terminal en OSX, consulteesta respuesta SO.

información relacionada