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:~

ssh 構成ファイルで指定した CustName01 エイリアスをタブに自動的に表示するにはどうすればよいですか? 検査タブ ダイアログで値を手動で設定するのは、私が求めていることではありません。

リモート サーバーに接続しているときにタブ名を設定するコマンドを実行しても何も起こりません。

printf "\e]1;CustName01\a"

答え1

一種のハックですが、これはある程度機能します。タブ インスペクタを見ると、タブのタイトルを設定する場所が 2 つあるため、ある程度機能すると言えます。AppleScript で「タブ タイトル」という入力を設定することはできませんでしたが、「ウィンドウ タイトル」という入力を設定することはできました。ただし、このソリューションにより、どのマシンに接続しているかがわかります。

settabname.sh

#!/bin/bash

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

設定ファイル

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

ここでの秘訣は、& が埋め込まれた AppleScript を含む bash を非同期的に実行することです。AppleScript には遅延があり、リモート接続で名前が変更された後にタブの名前を変更できます。

ssh コマンドが終了した後にタブ名をクリーンアップする方法は次のとおりです。 https://unix.stackexchange.com/questions/40899/ssh-localコマンド終了時

~/.bashrc

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

関連情報