예상 스크립트 - bash 스크립트 파일을 찾을 수 없습니다.

예상 스크립트 - bash 스크립트 파일을 찾을 수 없습니다.

내 기대 스크립트

#!/usr/bin/expect -f

#I tried replacing sh - with bash -s still no positive results
spawn ssh xxxx@yyyy "sh -" < test.sh
expect "password: "
send "zzzzz\r"
expect "$ "

터미널에서 이 명령을 실행하면 제대로 작동합니다.

ssh xxxx@yyyy "sh -" < test.sh

하지만 expect스크립트를 통해 실행하면 실패합니다.

이것은 Expect 스크립트를 통해 실행했을 때의 출력입니다. 내가 어디가 틀린지 알 수 있을까요?

bash: test.sh: No such file or directory

추신: 예, 파일이 존재하며 자격 증명이 정확합니다.

답변1

<문제는 ssh를 단독으로 실행하면(입력한 셸을 통해) 리디렉션이 로컬에서 수행되지만 이를 실행하면 원격 시스템에서 수행된다는 것입니다. expect제공 spawn한 인수는 단순히 복사되므로 <ssh 명령은 다음과 같습니다. 그 중 일부는 리모콘으로 전달됩니다. 이는 또한 'ssh' 'xxxx@yyyy' "sh -" '<' 'test.sh'쉘에 입력한 것처럼 작동하지 않습니다.

SSH 이전에 리디렉션을 해결하려면 중간 쉘 명령을 추가해야 합니다. 예를 들어,

spawn sh -c "ssh xxxx@yyyy sh - < test.sh"

관련 정보