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

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

Настройка .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"

решение1

Это своего рода хак, но это вроде работает. Я говорю вроде работает, потому что есть два места для установки заголовка вкладки, если вы посмотрите в Tab Inspector. Я не смог установить нужный мне ввод, который говорит "Tab Title" с помощью AppleScript, но я смог установить тот, который говорит "Window Title". Это решение поможет мне узнать, к какой машине я подключен.

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

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

Вот как можно очистить имя вкладки после завершения команды 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
}

Связанный контент