스크립트를 작성하려고 합니다.서버 1다음을 사용하여 실행됩니다.사용자 1일부 명령을 실행서버 2그리고사용자 2
그래서서버 1다음 명령을 사용하여 실행하려고 하면사용자 1, 환경 변수가 보이지 않습니다사용자 2(에 정의됨/home/user2/.profile)
사용자 1>ssh user2@server2 "env"
그러므로 나는 실행할 수 없다사용자 2server1에서 ssh 특정 명령을 사용하십시오.
참고: server1/user1과 server2/user2 사이에 올바른 SSH가 구성되어 있으면 다음과 같이 하면 server1의 server2에서 실행 중인 프로세스를 볼 수 있습니다.
사용자 1>ssh user2@server2 "ps -ef|grep user2"
답변1
너무 길어요.
user1> ssh user2@server2 '$env'
긴 대답
ssh 명령을 실행하는 첫 번째 예에서는 이 누락되었습니다 $
. 입력한 경우 리터럴 문자열로 유지되며 환경 변수로 확장되지 않습니다 ssh user2@server2 "env"
."env"
네가 원한다면사용자 2실행 명령 사용사용자 2환경 변수를 사용하려면 런타임 시 이러한 변수로 확장될 문자열을 전달해야 합니다. 예를 들어:
user1> ssh user2@server2 'echo $PATH'
에코됩니다사용자 2PATH
터미널 로 가세요 .
그러나 SSH를 통해 명령을 실행할 ~/.profile
때아니요사전 실행(토론 참조여기). 따라서 에 정의된 환경 변수에 액세스하려면 ~/.profile
다음 명령을 실행하십시오.
user1> ssh user2@server2 'source ~/.profile; $env'
경고하다"
: 작은따옴표( ) 대신 큰따옴표( ) 를 사용하면 '
쉘이 다음과 같이 실행됩니다.사용자 1큰따옴표 안의 모든 환경 변수를 다음으로 확장합니다.사용자 1환경 변수앞으로명령은 SSH를 통해 다음으로 전송됩니다.사용자 2.