¿Cómo puedo hacer que los nombres de las pestañas del terminal OSX sean los mismos que los alias de host .ssh/config?

¿Cómo puedo hacer que los nombres de las pestañas del terminal OSX sean los mismos que los alias de host .ssh/config?

Configurar un .ssh/config es un gran ahorro de tiempo. Los alias de host con nombres definidos por el usuario facilitan el seguimiento de servidores y archivos clave. Sin embargo, los nombres de las pestañas del terminal OSX muestran lo que el servidor dice que es su nombre de host, en lugar del alias de host del archivo .ssh/config.

Para esta entrada:

Host CustName01
    HostName ec2-20-12-130-143.compute-1.amazonaws.com
    IdentityFile ~/.ssh/remote.pem
    User root

El nombre de la pestaña del terminal OSX muestra esto:

root@domU-11-21-35-24-33-9A:~

Intenté resolver el problema configurando el nombre de la pestaña antes de conectarme:

Host *
    PermitLocalCommand yes

Host CustName01
    LocalCommand printf "\e]1;CustName01\a"
    HostName ec2-20-12-130-143.compute-1.amazonaws.com
    IdentityFile ~/.ssh/remote.pem
    User root

Establece el nombre de la pestaña antes de conectarse, pero luego muestra esto nuevamente después de conectarse:

root@domU-11-21-35-24-33-9A:~

¿Cómo puedo hacer que mi pestaña muestre automáticamente el alias CustName01 que especifiqué en el archivo de configuración ssh? Establecer manualmente el valor en el cuadro de diálogo de la pestaña inspeccionar no es lo que busco.

Ejecutar el comando para configurar el nombre de la pestaña mientras está conectado a un servidor remoto no hace nada:

printf "\e]1;CustName01\a"

Respuesta1

Es una especie de truco, pero esto funciona. Digo que funciona porque hay dos lugares para establecer el título de la pestaña si miras en el inspector de pestañas. No pude configurar la entrada que quería que dice "Título de la pestaña" con Applecript, pero pude configurar la que dice "Título de la ventana". Sin embargo, esta solución me ayudará a saber a qué máquina estoy conectado.

settabname.sh

#!/bin/bash

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

~/.ssh/config

Host *
    PermitLocalCommand yes

Host CustName01
    LocalCommand ~/.ssh/settabname.sh CustName01 &
    HostName ec2-20-12-130-143.compute-1.amazonaws.com
    IdentityFile ~/.ssh/remote.pem
    User root

El truco aquí es que & hace que bash con el Applescript incrustado se ejecute de forma asincrónica. El Applecript tiene un retraso que le permite cambiar el nombre de la pestaña después de que su conexión remota cambie el nombre.

A continuación se explica cómo puede limpiar el nombre de la pestaña después de que salga el comando ssh. https://unix.stackexchange.com/questions/40899/ssh-localcommand-on-exit

~/.bashrc

## run a cleanup command after ssh exit
ssh() {
    if command ssh "$@"; then
        # commands go here
        ~/.ssh/settabname.sh Local &
    fi
}

información relacionada