2015-01-09 2 views
0

이 "보기가 쉬운"문제에 대한 답을 찾을 수 없습니다.SSH 명령을 통해 ksh에서 원격 서버 env 변수를 사용하십시오.

ksh 쉘 또는 스크립트를 사용하여 의 env 변수 인 SERVER을 사용하여 ssh 명령을 실행하고 싶습니다.

예 : ssh를 사용자 @ 서버 "LS $ DIR"

$ DIR은 ENV 변수 (이 경우 : 디렉토리 경로)를 서버에 정의이다

아닌 $ DIR 정의 내 고객 env.

최악의 경우 나는 과 같은 것을 사용할 수 있습니다. env | grep DIR | cut -d "="-f 2 var를 얻으려면 이상하게 보입니다.

도움 주셔서 감사합니다.

답변

0
ssh [email protected] "ls $DIR" 

큰 따옴표로 묶은 문자열은 변수 보간을 거칩니다. 따라서 "$ DIR"이 로컬 시스템에서 대체되면 쉘은 결과 문자열과 함께 ssh 명령을 호출합니다. 설명에 대한

ssh [email protected] 'ls $DIR' 
+0

감사합니다. 하지만 지금은 좀 어리 석다. 효과가있다. –

0

SSH 명령 실행 셸은 non-interactive 셸이지만 일반 셸은 login 셸 또는 interactive 셸입니다. 모든 환경 varialbles 비 대화식 쉘에서 사용할 수없는 사실

, 당신은 대략

를 따르고 있습니다 bash 사람들의 경우, non-interactive 모드에서 실행할 때 ksh 것을 읽기 구성 파일을 알아 내기 위해 ksh 설명서를 확인해야합니다
/etc/profile 
~/.bash_profile 
~/.bash_login 
~/.profile 

ksh에 해당하는 항목을 찾아서 DIR 환경 변수 정의를 다른 곳으로 이동/복사하십시오.

+0

감사 :

가 원격 시스템을 통해 문자 그대로의 명령을 전달하려면, 작은 따옴표를 사용합니다. 내 .profile에 ksh가 서버 측에서 사용하는 변수가 있습니다. 그러나 ssh는 여전히 현재 클라이언트 측 변수의 정의를 사용합니다 (DIR은 다른 값을 가진 두 환경에서 모두 정의됩니다). ssh가 서버의 정의를 사용하고 싶다는 것을 어떻게 이해시킬 수 있습니까? –

+0

좋아, 이제 좋다. 내 .profile을 ssh 세션 시작시에 lauching하고 Kenster 응답 구문을 사용하여, 이제 원격 변수를 사용하고 있습니다. –

+0

문제가 해결되었습니다. – deimus