Arreglar el título del terminal después del inicio de sesión remoto SSH en otra máquina

Arreglar el título del terminal después del inicio de sesión remoto SSH en otra máquina

En este momento estoy usando un código Perl de una línea para cambiar los títulos de las barras de mi terminal.

print("\e]0;@ARGV\7");

pero cada vez que hago ssh a otra máquina remota, el host modificará el título (lo cual no me molesta particularmente). Pero después de salir de la conexión, el título modificado permanece. ¿Hay alguna manera de solucionar esto? Básicamente, quiero un título fijo para mis terminales cuando operen localmente.

Utilizo principalmente el terminal y terminador xfce en CentOS o Debian. Gracias.

EDITAR

Otra sutileza es que, en lugar de tener todos los terminales con el mismo nombre, preferiría tener la libertad de editar sus títulos sobre la marcha, pero sólo prohibir que la sesión SSH modifique lo que he editado.

Respuesta1

Solución: agregue algunas funciones ~/.bashrc para hacer algodespuéscomandos ssh y su

function title()
{
   # change the title of the current window or tab
   echo -ne "\033]0;$*\007"
}

function ssh()
{
   /usr/bin/ssh "$@"
   # revert the window title after the ssh command
   title $USER@$HOST
}

function su()
{
   /bin/su "$@"
   # revert the window title after the su command
   title $USER@$HOST
}

Nota: reinicie bash después de editar ~/.bashrc

Ejemplo:

# title is "user1@boxA"
ssh boxB  # auto changes title while on boxB to "user1@boxB"
exit
# title returns back to "user1@boxA" because of our title call in ssh()
su - user2 # auto changes title while switched user to user2: "user2@boxA"
exit
# title returns back to "user1@boxA" because of our title call in su()

Espero que ayude.

Respuesta2

No sé acerca de los títulos de las ventanas, pero he estado intentando que mi sistema haga algo al finalizar una sesión ssh; en realidad, después de finalizar una sesión ssh. En resumen: no funciona así. Básicamente tienes tres opciones:

  1. Escriba un contenedor alrededor de ssh, es decir, un script de shell ejecutable sshcuyo nombre tenga prioridad sobre /usr/bin/sshsu $PATH que contiene la línea exec /usr/bin/ssh $@en algún lugar en el medio. Esto le permite hacer que su shell haga algunas cosas antes y después de ejecutar el binario ssh efectivo, mientras mantiene la sobrecarga al mínimo.

  2. Escriba un parche para las fuentes SSH de su elección para proporcionarle un enlace de limpieza que ejecute un comando de shell pasado a través de la línea de comandos o alguna configuración de configuración. Eso es lo que queremos.

  3. He PROMPT_COMMANDevaluado la salida de history. Básicamente, un enfoque más genérico y más feo de 1.

Respuesta3

Configure su archivo de puntos de shell local (por ejemplo, $PROMPT_COMMANDen ~/.bashrc) para establecer el título del terminal de forma adecuada, utilizando el mismo mecanismo.

Por ejemplo:

export PROMPT_COMMAND="printf '\e]0;bash\7\n'"

Respuesta4

Otras respuestas no funcionarían para mí cuando salgo de SSH, pero me acercaron. Agregar setw automatic-rename funciona cuando salgo de la sesión ssh remota, por lo que cambia el nombre automáticamente y ya no tengo que salir de la ventana para restablecer. [Ene. 2018-Debian 9]

ssh() {
tmux rename-window "$*"
command ssh "$@"
tmux setw automatic-rename
}

información relacionada