sftp 스크립트가 있고 sftp 디렉터리를 연결하고 파일을 로컬 컴퓨터에 복사하려고 합니다. 원격 sftp 디렉토리에는 ftp에서 로컬 디렉토리로 가져와야 하는 파일 이름이 포함된 "note.lst" 파일이 있습니다.
sftp
cd /root/ftp1
lcd /root/foleder1
cat note.lst > ${2}
mget ${2}
bye
위의 명령줄에서 목록 파일을 cat하고 cat o/p의 데이터를 변수 ${2}로 이동하여 가져오려고 합니다.
다음 방법은 작동하지 않습니다. 누구든지 나를 도울 수 있습니까?
감사해요.
답변1
이를 두 가지 작업으로 분할할 수 있습니다. 하나는 목록을 가져오고 다른 하나는 나열된 파일을 가져오는 것입니다.
# Fetch the list
scratch=$(mktemp -d)
trap "rm -fr $scratch" EXIT
scp user@host:/root/ftp1/note.lst $scratch/filelist.txt
# transmogrigy the list into the SFTP script:
awk 'BEGIN{ print "lcd /root/foleder1"; print "cd /root/ftp1" } { print "get \"" $0 "\"" }' > $scratch/script.sftp
# execute the SFTP script
sftp -b $scratch/script.sftp user@host