2013-04-05 3 views
4

원격 ssh에서 변수를 전달할 때 다른 게시물을 읽었지만 그 해결책은 저에게는 효과가없는 것 같습니다.쉘 변수를 ssh에 넘겨주기

내 상황은 다음과 같습니다.ssh를 통해 시스템에서 사용되는 내 셸 스크립트 (로컬 컴퓨터)에서 내 변수의 값을 채 웁니다. 왜 이것이 작동하지 않는지 이해하지만 ssh를 통해 다른 시스템의 로컬 쉘에서 값을 사용하는 방법을 찾고 싶습니다.

BUILD_SERVER="my_server" 
ANOTHER_SERVER="my_server2" 
ssh [email protected]$BUILD_SERVER << 'ENDSSH' 

echo "$BUILD_SERVER" 
echo "$ANOTHER_SERVER" 

ENDSSH 

이 코드를 실행할 때 이러한 변수는 null입니다. ssh에 값을 전달할 수있는 방법이 있습니까?

답변

6

나는 그것을 알아 냈다. 내가 다음을하고있는 행에서 :

ssh [email protected]$BUILD_SERVER << 'ENDSSH' 

작은 따옴표를 제거 했으므로 이제 내 로컬 변수 허용을 해석합니다. 원격 서버에서 변수를 사용하고자한다면 "\"를 사용하여 이스케이프 처리합니다.

ssh [email protected]$BUILD_SERVER << ENDSSH 

echo $BUILD_SERVER  # echos the local server variable 
LOCAL_SERVER="local_server" 

echo \$LOCAL_SERVER # echos the remote server variable 

ENDSSH 
+0

로컬은 로컬 시스템이고 원격 서버입니까? 나는 비슷한 문제가있다 : 'ssh -p $ deployServerPort -t deployServerUser @ $ deployServerIp "sudo bash \"$ deployShellScript \ " 'true'"내 문제는'String : true'가 인식되지 않는다는 것이다. '$ deployShellScript'에서 스크립트에'true'를 전달하고 싶습니다. –

+0

@AndiGiga 내 솔루션에서'$ LOCAL_SERVER' 변수는 로컬 컴퓨터 또는 ssh를 호출하는 컴퓨터에 있고'\ $ LOCAL_SERVER'는 원격 컴퓨터에서 변수가 확장 된 것입니다. 나는 당신도 진실을 피할 필요가 있다고 생각합니다. (예 :'\ ​​"true \"') –

+0

나는 그것도 벗어나려고했지만, 내 스크립트는 그것을 가져 가지 않았다. 하지만 지금은 왜 그런지, 스크립트 내의 오류입니다. 아직도 Thx –

관련 문제