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
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 ssweb
en 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
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.
cosú
clt60
octern