Как сделать так, чтобы имена вкладок терминала OSX совпадали с псевдонимами хоста .ssh / config

3

Настройка .ssh / config позволяет сэкономить время. Псевдонимы хоста с пользовательскими именами упрощают отслеживание серверов и файлов ключей. Однако имена вкладок терминала OSX отображают то, что сервер называет именем своего хоста, вместо псевдонима хоста из файла .ssh / config.

Для этой записи:

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

Имя вкладки терминала OSX показывает это:

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

Я попытался решить проблему, установив имя вкладки перед подключением:

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

Он устанавливает имя вкладки перед подключением, но затем снова показывает это после подключения:

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

Как я могу заставить свою вкладку автоматически показывать псевдоним CustName01, который я указал в файле конфигурации ssh? Ручная установка значения в диалоговом окне проверки не то, что мне нужно.

Выполнение команды для установки имени вкладки при подключении к удаленному серверу ничего не делает:

printf "\e]1;CustName01\a"
tponthieux
источник

Ответы:

0

Что-то вроде взлома, но это работает. Я говорю вроде работает, потому что есть два места, чтобы установить заголовок вкладки, если вы посмотрите в инспекторе вкладок. Я не смог установить требуемый ввод с надписью «Заголовок вкладки», но я смог установить под заголовком «Заголовок окна». Это решение поможет мне узнать, к какой машине я подключен.

settabname.sh

#!/bin/bash

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

~ / .Ssh / конфигурации

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

Хитрость в том, что & заставляет bash со встроенным яблочным сценарием выполняться асинхронно. Яблочный скрипт имеет задержку, которая позволяет ему переименовывать вкладку после того, как ваше удаленное соединение делает переименование.

Вот как вы можете очистить имя вкладки после выхода из команды 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
}
tponthieux
источник
Это не работает для меня вообще.
Джей