SFTP 스크립트가 모든 파일을 다운로드하지 않음

SFTP 스크립트가 모든 파일을 다운로드하지 않음

BCP11,BCP12,BCP13,BCP14.....BCPXX어떤 폴더에 BCPDUMP파일이 있는지 와 같은 내 서버 폴더에 대한 다음 세부 정보가 포함된 sftp 파일 스크립트가 있습니다 .

파일 이름: file_sftp.sh

#!/usr/bin/expect
spawn sftp [email protected]
expect "[email protected]'s password:"
send "password\n"
expect "sftp>"
send "get *Backup/GetBackup/BCP*/*BCPDUMP/20150925/20150925_profile*\n"
expect "sftp>"
send "bye\n"

이 스크립트를 실행하면 서버에는 약 12개의 파일이 있는 반면 나는 하나의 파일만 얻습니다. 다음 스크립트 출력이 나타납니다.

spawn sftp [email protected]  
Connecting to xx.xxx.x.xxx...  
Password:  
sftp> get *Backup/GetBackup/BCP*/*BCPDUMP/20150925/20150925_profile*  
Couldn't get handle: No such file or directory^M  
Couldn't get handle: No such file or directory^M  
Couldn't get handle: No such file or directory^M  
Fetching   /rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z to 20150925_profile_410.list.Z
^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z 0%    0     0.0KB/s   --:-- ETA^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z                                                           66% 1152KB   1.1MB/s   00:00 ETA^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z                                                          100% 1730KB 864.9KB/s   00:02  

답변1

디렉토리를 검색하려고 하므로 get -r.

답변2

BCP* 및 *BCPDUMP 디렉터리의 이름을 이미 알고 있는 경우 모든(*)에 대해 한 줄에 한 번만 이 문자를 사용해 보십시오.

다른 줄에 디렉터리 이름을 입력하는 것이 좋지 않다고 생각하는 경우 명령을 사용하여 ls모든 디렉터리를 나열하고 배열에 넣을 수 있습니다. 그런 다음 각 디렉터리 또는 다른 배열 값 경로에 사용 가능한 모든 파일을 다운로드합니다. .

답변3

command시간이 많이 걸리면 다음 구성을 시도해 보세요.

send "command\r"
expect { 
    timeout { 
        puts "Running..." 
        exp_continue 
    } 
    "%PROMPT%" { 
        puts "Finished." 
    } 
}
send "next command\r"

계속해서 주문을 timeout기다리게 됩니다 .exp_continue%PROMPT%

답변4

왜 기대를 사용하는지 이해할 수 없습니다.

쉘 스크립트에서 이 스니펫을 사용하세요...

 ftp -i -n ftp.somehost.com  <<-EOF
   user somelogin somepassword
   mget *
   bye
   EOF

각 줄(user, mget, bye, EOF)은 "탭" 문자로 시작됩니다.

또한 특정 파일 세트를 얻는 경우(두 개의 파일보다 큰 경우)

 mget file1 file2 file3 file4 ... filen

관련 정보