서버를 ssh 할 때 터미널 색상을 자동으로 변경하려면 어떻게해야합니까?


14

os x 터미널 창에서 다른 서버에 자주 로그인하고 있습니다.

터미널 창을 쉽게 구분할 수 있도록 다른 호스트에 색 구성표를 할당하고 싶습니다. 이 작업을 자동으로 수행 할 수 있습니까?

답변:


11

다음은 완벽한 솔루션입니다. 서버의 IP 주소 및 / 또는 도메인 목록과 원하는 색상을 ~ / .server_colors에 보관하십시오.

192.168.122.102, 레드 샌드
192.168.122.103, 바다
www.foo.com, 잔디
foo.com, 잔디

그런 다음이 줄을 ~ / .profile에 추가하여 ssh 명령을 가로 채십시오.

별칭 ssh = "~ / bin / safe_ssh $ 1"

그런 다음 ssh 대상에서 @ 뒤에 나오는 내용을 목록과 비교하십시오. 일치하는 경우 AppleScript를 실행하여 화면을 해당 색상으로 변경하십시오. ~ / bin / safe_ssh는 다음과 같습니다.

#! / bin / bash
ip =`echo $ 1 | 컷 -d "@"-f2`
match =`cat ~ / .server_colors | grep $ ip | 화장실 -l`
[$ match -gt 0] 인 경우
그때
    color =`cat ~ / .server_colors | grep $ ip | 컷 -f2 -d ","`
    osascript ~ / bin / change_terminal_color.scpt "$ color"2> / dev / null
fi
/ usr / bin / ssh $ 1

마지막으로 ~ / bin / change_terminal_color.scpt가 있습니다.

실행중인 argv
    응용 프로그램 "터미널"에 창 1의 선택된 탭의 현재 설정을 (이름이 (arrgv의 항목 1 인 첫 번째 설정)으로 설정)
최종 실행

이 블로그 게시물 에서이 코드의 대부분을 가져 왔습니다 .


1
아주 좋아요 safe_ssh 스크립트에서 SSH에 대한 추가 매개 변수를 전달하려면 $ 1이 $ @ 여야합니다. 아마도 ssh 이후의 호출로 터미널을 기본값으로 되돌릴 수도 있습니다. 마지막으로 한 번 편집하면이 기능이 완벽 해집니다 : '@'를 포함하지 않는 SSH 명령 지원.
nOw2


2

@muirbot의 솔루션은 정말 잘 작동합니다. 나는 그것에 약간의 개선을했다. 평판이 충분하면 게시물 아래에 추가하겠습니다.

라인 교체

ip =echo $1 | cut -d"@" -f2
ip =echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

이 변경으로 "ssh -p 1111 userName @ host"와 같이 ssh 명령에 추가 인수를 제공 할 수 있습니다.

정규식은 간단한 ipv4 주소와 도메인 이름을 허용합니다.

여러 인수를 추가로 지원하려면 마지막 줄을

/ usr / bin / ssh $ @


0

방금 똑같은 것을 찾고이 기사를 찾았습니다.

http://akrabat.com/php/osx-terminal-colours/

PHP 스크립트를 사용하여 applescript로 터미널 색상을 변경합니다. 각 서버마다 다른 색상의 매핑을 설정할 수 있습니다. PHP 작업을 루비로 다시 작성하려는 충동을 느끼지만 나를 위해 잘 작동합니다 :)

fk


0

다른 bg / fg 색상의 xterm 창에서 SSH를 시작하는 스크립트를 사용합니다. 색상 범위에서 호스트 이름의 해시를 기반으로 색상을 선택하므로 구성이 필요하지 않습니다.

스크립트는 Ruby로 작성됩니다 : https://github.com/mickeyil/ssx


0

iTerm2를 사용하는 경우 https://gist.github.com/jbochi/31f118b8ae2882a2c90fa46c46509b57~/bin/ssh-host-color.sh 의 컨텐츠로 이름이 지정된 파일을 작성 하십시오 .

set_term_bgcolor(){
  local R=$1
  local G=$2
  local B=$3
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell the current window
    tell the current session
      set background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
    end tell
  end tell
end tell
EOF
}

if [[ "$@" =~ "production.example.com" ]]; then
  set_term_bgcolor 40 0 0
elif [[ "$@" =~ "qa.example.com" ]]; then
  set_term_bgcolor 0 40 0
fi

trap "set_term_bgcolor 0 0 0" EXIT

ssh $@

~/.aliases.sh파일에 다음 줄을 추가 하십시오.

alias ssh="~/bin/ssh-host-color.sh $@"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.