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

일종의 해킹이지만 이런 종류의 작업은 가능합니다. 탭 검사기를 보면 탭 제목을 설정할 수 있는 위치가 두 군데 있기 때문에 일종의 작동이라고 말합니다. AppleScript에서는 "탭 제목"이라는 원하는 입력을 설정할 수 없었지만 "창 제목"이라는 입력은 설정할 수 있었습니다. 이 솔루션은 내가 어떤 컴퓨터에 연결되어 있는지 아는 데 도움이 될 것입니다.

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

여기서의 비결은 &가 포함된 AppleScript가 있는 bash를 비동기적으로 실행하게 한다는 것입니다. 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
}

관련 정보