1 votos

Renombrar la pestaña del terminal a alias de host en la configuración de ssh

Soy nuevo en el uso de Mac (Mac Pro, OS X 10.8.4) y me conecto a muchos hosts remotos usando ssh. He creado alias en el archivo .ssh/config y me gustaría tener el alias del host como el nombre de la pestaña en la terminal.

¿Alguien puede aconsejarme sobre cómo se puede hacer?

Muchas gracias.

3voto

Phill Puntos 126

EDIT: En Yosemite (OS X 10.10), use esto en su lugar:

function ssh () 
{ 
     servername=$(echo $@ | sed -E 's|([- a-zA-Z0-9:/]+)( *[^@ ]*@)([^@ ]*)|\3|')
     echo -ne "\033]0;${servername}\007";
     /usr/bin/ssh $@
}

Tenga en cuenta que la función espera que se especifique el nombre de usuario y el nombre del servidor como usuario@servidor (también puede usar la dirección IP del servidor: usuario@a.b.c.d, el nombre de la pestaña se establecerá en a.b.c.d). Otras combinaciones como -l usuario servidor no funcionarán correctamente.

Puede deshacer la función con:

unset -f ssh

Puede crear una función llamada ssh que establece el nombre de la pestaña del terminal y luego invoca /usr/sbin/ssh:

function ssh () 
{ 
    servername=$(echo $@ | sed 's|\([- a-zA-Z0-9:/]\+\) *\([^-]\+@\)*\([-a-zA-Z0-9.]\+\)|\3|' | awk '{print $1}');
    echo -ne "\033]0;${servername}\007";
    /usr/bin/ssh $@
}
  • servername=$(echo $@ ...

    La primera línea extrae el nombre del servidor de los argumentos pasados a ssh. Lo probé contra varias invocaciones posibles de ssh con y sin argumentos, pero no puedo garantizar que sea infalible.

  • echo -ne "\033]0;${servername}\007";

    La segunda línea es donde ocurre la magia. \033]0;\007 es una secuencia de ESCAPE que establece el nombre de la pestaña del terminal. Consulte este artículo de Wikipedia para obtener más información - este código de escape en particular está listado en la sección de códigos no-CSI.

  • /usr/bin/ssh $@

    Iniciar /usr/bin/ssh con los argumentos proporcionados.

Agregue la función a su archivo ~/.bashrc (si no usa bash, modifíquelo para que coincida con la sintaxis de su shell y agréguelo al archivo de inicio de su shell) para que siempre sea accesible.

Tenga en cuenta que también establecerá el nombre de la pestaña del terminal al ejecutar un comando remoto:

ssh usuario@servidor comando

por ejemplo:

ssh jaume@miservidor ls -l /

1voto

Pistos Puntos 305

Puedes usar el argumento LocalCommand en tu archivo ~/.ssh/config para ejecutar un archivo bash o Applescript que establece el nombre de la pestaña.

Script de Bash: ~/.ssh/settabname.sh

#!/bin/bash

osascript -e 'delay 2' -e "tell application \"Terminal\" to tell window 1 to set custom title to \"$1\""

Tu archivo ~/.ssh/config:

Host *
PermitLocalCommand yes

Host tudirecciondehost
LocalCommand ~/.ssh/settabname.sh tudirecciondehost &
...

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