저는 Red Hat Linux 7.5 환경을 사용하고 있습니다. 특정 파일 확장자로 끝나는 폴더에서 파일을 가져오거나 받기 위한 컬 스크립트를 작성하려고 합니다.
이전에는 ftps(SFTP 아님) 옵션, 로그인 및 비밀번호, 전체 추적 로깅 및 기타 오류의 경우 2>&1입니다. 파일 이름이 로컬이고 일부 스크립트 논리로 grep'ed할 수 있었기 때문에 스크립트를 작성할 수 있었습니다.
기본적으로 보낼 컬 진술은 다음과 같습니다.(아니요, 문자열의 실제 참조가 아닙니다. 개인정보 보호를 위해 해당 값을 변경했습니다.):
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
파일 전송 및 로깅을 위해 설계되었습니다.