예상을 사용하여 ssh 후에 구성 파일 로드

예상을 사용하여 ssh 후에 구성 파일 로드

원격 호스트로 ssh를 시도하고 .zshrc호스트의 파일에 환경 변수를 로드한 다음 해당 환경 변수를 사용하여 명령을 실행하려고 합니다.

이것은 지금까지 내 스크립트입니다.

#!/usr/bin/expect -f
spawn ssh hostname
send "echo $my_variable\n"
interact

내 원격 호스트의 파일에는 .zshrc다음 내용이 포함되어 있습니다.

export my_variable=banana_tree

위 스크립트를 실행하면 다음과 같은 결과가 출력됩니다.

spawn ssh hostname
can't read "my_variable": no such variable
    while executing
"send "echo $my_variable\n""
    (file "/Users/me/myscript.sh" line 6)

예상한 변수가 스크립트를 실행하는 환경에 정의되어 있지 않기 때문에 찾을 수 없다는 오류 메시지를 알고 있습니다. 해결 방법은 스크립트를 실행하는 변수를 정의하는 것이지만 유지하는 것을 선호합니다. 가능하면 원격에서 호스트에 정의된 변수.

답변1

대본에서 달러 기호를 벗어나야 했기 때문에 다음과 같이 되었습니다.

#!/usr/bin/expect -f
spawn ssh hostname
send "echo \$my_variable\n"
interact

로드 중인 것처럼 보이지만 .zshrc호스트에 환경 변수를 로드하려면 달러 기호를 이스케이프해야 하는 반면, 스크립트에서 환경 변수를 정의하려면 달러 기호를 이스케이프하지 않습니다.

관련 정보