Como posso fazer com que os nomes das guias de terminal OSX sejam os mesmos dos aliases de host .ssh / config?

3

Configurar um .ssh / config economiza muito tempo. Os alias de host com nomes definidos pelo usuário facilitam o rastreamento de servidores e arquivos de chaves. No entanto, os nomes da guia do terminal OSX estão exibindo o que sempre o servidor informa seu nome de 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 isso:

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

Eu 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 se conectar, mas mostra isso novamente após a conexão:

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

Como posso obter minha guia para mostrar automaticamente o alias CustName01 que eu especifiquei no arquivo de configuração ssh? Definir manualmente o valor na caixa de diálogo da guia Inspecionar não é o que eu estou procurando.

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"
    
por tponthieux 08.02.2013 / 05:19

1 resposta

0

Meio que um hack, mas esse tipo de coisa funciona. Eu digo tipo de obras, porque há dois lugares para definir o título da guia, se você olhar na guia inpector. Eu não fui capaz de definir a entrada que eu queria, que diz "Tab Title" com applescript, mas eu fui capaz de definir o que diz "Window Title". Essa solução me ajudará a saber a qual máquina eu 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 embutido seja executado de forma assíncrona. O applescript tem um atraso que permite renomear a guia após a renomeação da conexão remota.

Veja como você pode limpar o nome da guia após o comando ssh sair. link

~ / .bashrc

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