
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
}