Como posso tornar os nomes das guias do terminal OSX iguais aos aliases de host .ssh/config

Como posso tornar os nomes das guias do terminal OSX iguais aos aliases de host .ssh/config

Configurar um .ssh/config economiza muito tempo. Os aliases de host com nomes definidos pelo usuário facilitam o rastreamento de servidores e arquivos principais. No entanto, os nomes das guias do terminal OSX exibem o que o servidor diz ser o nome do host, em vez do alias do host do arquivo .ssh/config.

Para esta entrada:

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

O nome da guia do terminal OSX mostra isto:

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

Tentei resolver o problema definindo o nome da guia antes de conectar:

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

Ele define o nome da guia antes de conectar, mas mostra isso novamente após a conexão:

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

Como posso fazer com que minha guia mostre automaticamente o alias CustName01 especificado no arquivo de configuração ssh? Definir manualmente o valor na caixa de diálogo da guia de inspeção não é o que procuro.

Executar o comando para definir o nome da guia enquanto estiver conectado a um servidor remoto não faz nada:

printf "\e]1;CustName01\a"

Responder1

Meio que um hack, mas funciona. Eu digo que funciona porque há dois lugares para definir o título da guia se você olhar no inpetor de guias. Não consegui definir a entrada desejada que diz "Título da guia" com applescript, mas consegui definir aquela que diz "Título da janela". Esta solução me ajudará a saber a qual máquina estou 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

O truque aqui é que & faz com que o bash com o applescript incorporado seja executado de forma assíncrona. O applescript tem um atraso que permite renomear a guia após a renomeação da sua conexão remota.

Veja como você pode limpar o nome da guia após a saída do 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
}

informação relacionada