SSH를 통해 로그인한 후 원격 서버에서 스크립트를 실행하는 방법

SSH를 통해 로그인한 후 원격 서버에서 스크립트를 실행하는 방법

저는 여러 대의 서버를 관리하므로 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.shssh-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_TTYSSH를 통해 연결되어 있는지 확인할 수 있습니다.

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.

즐거운 코딩하세요!

관련 정보