Bash로 ssh 연결 시 연결 대상에 따라 프롬프트의 문자색/배경색 변경

무엇을 원하십니까?



ssh 연결 대상이 여러 개인 경우,
머신 A라고 생각하고 있으면 머신 B에 접속하고 있어, 잘못해 커멘드 실행해 버렸다!
등의 에러를 막기 위해서, 프롬프트의 외형을 바꾸고 싶다.

결론



아래와 같이 쉘 스크립트를 작성하고,

ssh-change-prompt.sh
#!/bin/bash

if [[ "$@" == foo ]]; then
  ssh foo -t "export PS1='\[\e[32;40m\]\u@\h \W$\[\e[m\] '; bash --login"
elif [[ "$@" == bar ]]; then
  ssh bar -t "export PS1='\[\e[30;42m\]\u@\h \W$\[\e[m\] '; bash --login"
else
  ssh $@
fi

별칭을 만든 쉘 스크립트로 설정합니다.
alias ssh=/hoge/fuga/ssh-change-prompt.sh

설정 후, 쉘 스크립트내에 설정한 접속처에 ssh 접속을 실시하면,
프롬프트의 문자색과 배경색이 변경되었습니다.

상세



1, 프롬프트란?






여기에 표시되는 내용은 PS1이라는 환경 변수로 정의됩니다.echo $PS1그래서 내용을 확인할 수 있다.


이곳에서


특수 문자
의미


\u
현재 사용자의 사용자 이름

\h
호스트명의 최초의 `.'까지의 부분

\W
현재 작업 디렉토리의 기본 이름


의미합니다.
자세한 내용은
htps : // / xjm. 오 sd. jp / html / G no_ba sh / man 1 / bas sh. 1. HTML#lb
이쪽을 참고로 했다.

이 환경 변수 PS1을 다시 쓰면,
프롬프트를 변경할 수 있습니다.

2, 로컬에서 프롬프트 변경



환경 변수 PS1을 다시 쓰면 프롬프트를 변경할 수 있습니다.
여기서는 프롬프트의 내용을 변경하지 않고 문자색과 배경색 만 변경합니다.
export PS1='\[\e[30;42m\]\u@\h \W$\[\e[m\]' 

위의 명령으로 프롬프트의 문자 색과 배경색을 변경할 수 있습니다.


색 지정시의 구문 등의 상세에 대해서는,
h tp // w w. mbsys. 코 m / ぃぬ x / 에쵸코 ぉ r-1
이쪽을 참고로 했다.

3, ssh 연결시 원격 컴퓨터에 명령 전달


ssh foo -t "hogecommand'; bash --login"

hogecommand를 실행 한 결과를 로그인 쉘로 사용하고 그것을
가상 단말기에서 사용할 수 있도록 합니다.

4, ssh 접속시, 접속처에 의해 프롬프트의 문자색/배경색을 바꾼다



2,3을 조합하여 쉘 스크립트를 만듭니다.

ssh-change-prompt.sh
#!/bin/bash

if [[ "$@" == foo ]]; then
  ssh foo -t "export PS1='\[\e[32;40m\]\u@\h \W$\[\e[m\] '; bash --login"
elif [[ "$@" == bar ]]; then
  ssh bar -t "export PS1='\[\e[30;42m\]\u@\h \W$\[\e[m\] '; bash --login"
else
  ssh $@
fi

대상 foo에서 문자색이 Green이고 배경이 Black
연결 대상 bar에서 문자 색이 검은 색이고 배경이 녹색입니다.
되도록 설정한다.

이 쉘 스크립트에 별칭을 설정하고 ssh 대상에 실행하면,
접속처에 의해 프롬프트의 문자색/배경색을 바꿀 수 있었다.

보충



· 리모트 머신의 .bash_profile등에 PS1의 설정을 써 두면, 로컬로 쉘 스크립트를 작성하거나 앨리어스(alias)를 설정하지 않아도 된다. 이번에 이 방법으로 한 것은, 리모트 머신의 .bash_profile를 변경하고 싶지 않았기 때문.

좋은 웹페이지 즐겨찾기