쉘 스크립트 sftp 파일 사용

쉘 스크립트 sftp 파일 사용

몇 가지 스레드(도움이 됨)를 읽었지만 파일을 SFTP로 시도할 때 여전히 오류가 발생합니다(클라이언트가 SFTP로 편집하려고 함).

스크립트는 다음과 같습니다.

#!/bin/bash 
HOST=XX.XX.XX.XX
PORT=XXXX
USER=root
FILE=/tmp/RANDY

/usr/bin/expect<<EOD

spawn sftp -o Port=$PORT $USER@$HOST
expect "sftp>"
spawn put $FILE
interact
EOD

내가 받은 오류는 다음과 같습니다.

spawn sftp -oPort=XXXX [email protected]
Connecting to XX.XX.XX.XX...
sftp> spawn put /tmp/RANDY
couldn't execute "put": no such file or directory
    while executing
"spawn put /tmp/RANDY"

파일이 존재하며 올바른 디렉토리에 있습니다.

답변1

spawnExpect 스크립트의 두 번째 항목은 이어야 하며 send, 빌드 프로세스에 보낸 내용을 인용해야 하며 CR(캐리지 리턴, Enter라고도 함)을 생략했습니다.

send "put $FILE\r"

또한 이 interact명령이 필요하지 않을 수도 있습니다. 이것이 더 의미가 있을 수 있습니다:

expect "sftp>"
send "exit\r"

답변2

비밀번호나 인증이 발생하는 경우 먼저 인증해야 해당 오류가 발생하지 않도록 해야 합니다.

관련 정보