답변:
ssh LocalCommand를 사용하여 ANSI 이스케이프 시퀀스를 생성하여 배경색을 변경하고 호스트 당 섹션 (또는 호스트 패턴)을 사용하여 원격 호스트에 해당하는 적절한 색상을 선택할 수 있습니다.
프로덕션 서버가 "prod로 시작"과 같은 이름 지정 규칙을 따르는 경우 ~ / .ssh / config 파일에서 다음 스 니펫을 시도 할 수 있습니다.
Host prod*
PermitLocalCommand yes
LocalCommand printf "\x1b[41m\x1b[2JPRODUCTION SYSTEM [%n]\n\n"
와일드 카드 패턴을 사용하기위한 편리한 이름 지정 규칙이없는 경우 호스트 이름을 공백으로 구분하여 나열하면됩니다. 다양한 다른 비 프로덕션 서버에 대해 다른 색상 값과 문자열로 추가 호스트 블록을 만들 수 있습니다.
패턴과 일치하는 호스트에 연결 한 후 해당 printf가 로컬로 실행되어 배경색을 빨간색으로 변경합니다 ([41m은 빨간색을 배경색으로 선택하고 [2J 부분은 전체 화면을 업데이트 된 배경색으로 다시 칠합니다). 더 많은 옵션을 보려면 https://en.wikipedia.org/wiki/ANSI_escape_code )
이 접근 방식의 가장 큰 문제는 ssh 세션 종료시 배경색이 지속된다는 것입니다. 연결을 끊을 때 로컬 명령을 실행할 수 없습니다 (알고 있음). ssh의 별명 또는 쉘 랩퍼 스크립트 printf "\x1b[0m"
가 재설정으로 호출 될 수 있습니다. 반면, LocalCommand를 통해 배경색을 설정하면 랩퍼 스크립트 또는 별명을 통해 ssh를 실행하지 않아도 색상이 설정됩니다.
ls
별칭 ls --color=auto
과 같은 명령이 있고 재설정 시퀀스 '<ESC> [0m'을 포함하는 경우 발생할 수 있습니다 . 그래도 지속하려면 다른 gnome-terminal 프로파일을 설정하고 랩퍼 스크립트 경로로 이동하여 호스트 이름을 기반으로 프로파일 이름을 선택하고 호출해야합니다.gnome-terminal --profile=$PROFILE_NAME -e ssh $HOST &
ls --colour
PS1에 OR 시퀀스 가 있거나 OR이 있으면 둘 중 하나만 이전 ansi 색상 설정보다 우선합니다. 따라서 제안 된 래퍼 스크립트 솔루션을 구현하는 방법도 살펴볼 것입니다. Merci beaucoup!