
.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
}