몇 가지 스레드(도움이 됨)를 읽었지만 파일을 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
spawn
Expect 스크립트의 두 번째 항목은 이어야 하며 send
, 빌드 프로세스에 보낸 내용을 인용해야 하며 CR(캐리지 리턴, Enter라고도 함)을 생략했습니다.
send "put $FILE\r"
또한 이 interact
명령이 필요하지 않을 수도 있습니다. 이것이 더 의미가 있을 수 있습니다:
expect "sftp>"
send "exit\r"
답변2
비밀번호나 인증이 발생하는 경우 먼저 인증해야 해당 오류가 발생하지 않도록 해야 합니다.