저는 Red Hat Linux 7.5 환경을 사용하고 있습니다. 특정 파일 확장자로 끝나는 폴더에서 파일을 추출/수신하는 컬 스크립트를 작성하려고 합니다.
이전에는 컬과 ftps를 사용하여 푸시/전송하는 스크립트를 작성했습니다(SFTP가 아님) 옵션, 로그인 및 비밀번호, 전체 추적 로깅 및 2>&1 기타 오류. 파일 이름이 로컬이고 일부 스크립트 논리를 사용하여 파일 이름을 grep 편집할 수 있기 때문에 스크립트를 작성할 수 있습니다.
기본적으로 내가 보내고 싶은 컬 문은 이것이다(아니요, 이는 문자열의 실제 참조가 아니며 개인정보 보호를 위해 값을 변경했습니다.):
curl --ftp-ssl -k --trace /bedrock/fred/logs/sendpdf.log -T /bedrock/fred/brontosaurussteak.pdf -u fflintstn:H4s$anC#0P ftp://bedrockpoobalodge.com:27Memebers/fredflintstone/pdffiles/ >> /bedrock/fred/logs/transfer.log
위의 모든 참조는 스크립트에 있으며 경로 및 기타 항목에 대한 참조는 시간당 수백 개의 파일을 처리하는 루프의 변수에 저장됩니다. 작업 스크립트에서는 다음과 같습니다.
curl $curlFTPC $curlTRCMD\_$trFlCntr\_$cntnt.txt $curlSF/$file $curlAHaD &>> $prcssLgFl
가져오거나 받고 싶은 파일 이름을 모르는 경우에는 완전히 다른 이야기입니다.
나는 다음과 같은 "curl eval" 루프를 기반으로 한 많은 예를 보았습니다.
for i in $(curl https://someserver.com/alpha/beta/gamma/ | grep pdf | awk -F "=" '{print $2}' | jq '.[].full_path' | awk -F '"' '{printf("https://someserver.com/alpha/beta/gamma/%s\n",$2)}')
하지만 동일한 프로토콜과 인증에서 이와 같은 것을 삭제/수신할 수는 없는 것 같습니다. 나는 분명한 것을 놓치고 있다고 확신합니다.
bash에서 스크립팅이 가능하고 Expect를 사용하지 않는 한 솔루션이나 대안에 열려 있습니다.SFTP를 사용할 수 있습니다stdin, stdout 및 stderr에 대한 완전한 추적 및 로깅이 있습니다.
나는 "기대"를 사용하는 것을 꺼려합니다.
답변1
wget
구조를 위해. wget
파일 전송 및 로깅을 위해 설계되었습니다.