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