我在Red Hat Linux 7.5环境中。我正在尝试编写一个curl 脚本来从以特定文件扩展名结尾的文件夹中提取/接收任何文件。
之前,我编写了一个脚本,使用curl 和 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我可以对标准输入、标准输出和标准错误进行完整的跟踪和记录。
我不愿意使用“期望”。
答案1
wget
为了救援。wget
专为文件传输和日志记录而设计。