저는 여러 대의 서버를 관리하므로 SSH를 통해 해당 서버에 액세스해야 하는 경우가 많습니다. 로그인 시 원격 서버에서 기본 사용자 정의 스크립트를 자동으로 실행하고 싶습니다. 예를 들어 일부 별칭, vim 색상, PS1 등을 설정합니다.
나는 시작 스크립트로 모든 서버를 구성하고 싶지 않고, 그것이 내 컴퓨터에 로컬로 존재하고 내가 ssh로 접속하는 모든 서버에서만 실행되기를 원합니다.
비슷한 질문이 있습니다그러나 ssh는 스크립트를 실행한 후 로그아웃됩니다. 로그인 상태를 유지하려면 어떻게 해야 하나요?
이 답변은 매우 가깝습니다, 그러나 새 항목은 다음 bash -l
과 같은 환경 변수 세트를 등록하지 않는 것 같습니다 ssh -t user@remote 'export PS1=myps1; bash -l'
. 여기서는 원격 .bashrc 때문에 PS1이 새 프롬프트에 설정되지 않았습니다.
어떻게 이럴 수있어?
답변1
이것은 매우 간단합니다.
ssh [email protected] 'bash -s' < local_bash_script.sh
스크립트를 실행한 후 local_bash_script.sh
ssh-session은 즉시 닫힙니다.
고쳐 쓰다.
SSH 로그인 후 원격 서버에서 일부 작업을 수행하려면 SSH rc
파일을 생성하면 됩니다. 만들다원격 서버에서 rc
사용자 디렉터리 .ssh
의 파일 :
touch ~/.ssh/rc
선호하는 텍스트 편집기를 사용하여 파일을 엽니다 nano
. 예를 들면 다음과 같습니다.
nano ~/.ssh/rc
스크립트 파일의 내용을 복사하여 붙여넣습니다.
#/bin/sh
date
whoami
uname -r
exit 0
스크립트는 로그인할 때마다 실행됩니다( date
, whoami
,를 uname -r
사용자 명령으로 대체).
~/.ssh/rc
파일이 있는 디렉토리 rc
의 소유자인 명시적 사용자에 대해 스크립트가 실행됩니다. rc
원격 서버의 모든 사용자에 대해 스크립트를 실행 하려면 다른 전역 sshrc
파일을 만듭니다.
/etc/ssh/sshrc
그게 다야.
답변2
당신의 ~/.bashrc
.
SSH_CLIENT
혹시라도 / 값을 확인하여 SSH_TTY
SSH를 통해 연결되어 있는지 확인할 수 있습니다.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then ... ; fi
확인하다쉘이 SSH에 의해 제어되는지 어떻게 감지합니까?자세한 내용은
답변3
내 답변을 읽을 수 있습니다여기.
iTerm2를 사용하고 있기 때문에 다음을 알아냈습니다.
이와 같은 스크립트를 가질 수도 있습니다~/test.py
#!/usr/local/bin/python3
print("echo hello world")
그런 다음 iTerm2 메뉴 Session->Run Co-Process에서 스크립트를 공동 프로세스로 실행하고 스크립트를 다음과 같이 지정합니다.~/test.py
내 생각에는 스크립트를 실행 가능하게 만드는 것이 필요하다고 생각합니다(다른 방법으로 시도하지는 않았지만) chmod +x ~/test.py
.
즐거운 코딩하세요!