원격 셸에서 변수를 유지하는 방법

원격 셸에서 변수를 유지하는 방법

나는 컴퓨터에서 SSH를 실행하고 몇 가지 명령을 실행하고 있습니다.

내 마지막 명령은 로컬 스크립트에 필요한 변수를 제공했습니다. 하지만 컴퓨터에서 로그아웃한 후 이 변수에 어떻게 액세스합니까?

편집: 제가 이미 컴퓨터에 로그인했다고 가정해 주세요.

답변1

원격으로 실행된 명령의 출력을 클라이언트 컴퓨터의 로컬 변수에 캡처할 수 있습니다.

myvar="foo" 
echo "$myvar"
myvar=$(ssh user@hostname 'myvar="bar"; echo $myvar')
echo "$myvar"

원격 명령 주위에 작은따옴표가 있음을 참고하십시오: 'myvar="bar"; echo $myvar'. 이렇게 하면 $myvar평가를 위해 원격 호스트에 명령을 보내기 전에 쉘이 로컬로 확장되는 것을 방지할 수 있습니다 .

답변2

원하는 방법에 따라 다릅니다. 대화형 세션에서 단일 명령의 출력을 자동으로 가져오는 것은 쉽지 않습니다. 물론 터미널에서 출력을 복사하여 붙여넣을 수도 있습니다. 그러나 출력을 원격 파일에 저장한 후 다음과 같은 작업을 수행 var=$(ssh remote "cat file.with.var")하거나 다음과 같은 최종 출력을 생성하는 명령을 실행할 수도 있습니다 var=$(ssh remote "somecommand").

또는 대화형 세션에서 직접 이 작업을 수행하려면 Expect 스크립트를 설치하면 됩니다.

관련 정보