我编写了一个Perl脚本,该脚本作为每日crontab作业运行,通过CURL将文件上传到Amazon S3。我希望通过电子邮件发送给我的cron作业的输出工作正常,但我不希望该电子邮件包含与CURL上载相关的消息(只有我的脚本输出的那些消息)。以下是我现在在每日电子邮件中看到的与CURL相关的消息:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 230M 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 230M 0 0 0 544k 0 1519k 0:02:35 --:--:-- 0:02:35 1807k
0 230M 0 0 0 1744k 0 1286k 0:03:03 0:00:01 0:03:02 1342k
1 230M 0 0 1 2880k 0 1219k 0:03:13 0:00:02 0:03:11 1250k
1 230M 0 0 1 4016k 0 1198k 0:03:17 0:00:03 0:03:14 1218k
2 230M 0 0 2 5168k 0 1186k 0:03:19 0:00:04 0:03:15 1202k
2 230M 0 0 2 6336k 0 1181k 0:03:19 0:00:05 0:03:14 1157k
3 230M 0 0 3 7488k 0 1177k 0:03:20 0:00:06 0:03:14 1147k
3 230M 0 0 3 8592k 0 1167k 0:03:22 0:00:07 0:03:15 1142k
4 230M 0 0 4 9744k 0 1166k 0:03:22 0:00:08 0:03:14 1145k
4 230M 0 0 4 10.6M 0 1163k 0:03:23 0:00:09 0:03:14 1142k
5 230M 0 0 5 11.7M 0 1161k 0:03:23 0:00:10 0:03:13 1140k
5 230M 0 0 5 12.8M 0 1158k 0:03:23 0:00:11 0:03:12 1133k
6 230M 0 0 6 13.9M 0 1155k 0:03:24 0:00:12 0:03:12 1138k
6 230M 0 0 6 15.0M 0 1155k 0:03:24 0:00:13 0:03:11 1138k
7 230M 0 0 7 16.1M 0 1152k 0:03:25 0:00:14 0:03:11 1131k
7 230M 0 0 7 17.2M 0 1152k 0:03:25 0:00:15 0:03:10 1132k
7 230M 0 0 7 18.4M 0 1152k 0:03:24 0:00:16 0:03:08 1140k
我使用简单的Perl system()
调用来调用CURL。有谁知道我可以提供什么命令行参数CURL来关闭上传进度的报告?
答案 0 :(得分:10)
这里有一些选择。
您可以使用-s
或--silent
标记来静音所有输出。来自curl
联机帮助页:
-s/--silent Silent or quiet mode. Don’t show progress meter or error mes- sages. Makes Curl mute.
或者,不是在Perl脚本中使用system
之类的东西来运行curl
,而是可以使用反引号或qx
运算符将输出捕获到变量。
或者,您可以使用pipe打开curl
进程以捕获其STDOUT并稍后查看。
最后,您可能希望探索使用LWP::UserAgent或Mechanize这样的原生Perl库替换您对curl
的系统调用。
答案 1 :(得分:0)
由于某些原因,我的CURL版本没有识别-s或--silent,我知道这是没有意义的。正如@Friedo建议我尝试使用反引号或qx运算符,它也没有摆脱不需要的上传进度报告。最后,我采用了非常优雅的方式将>/dev/null 2>&1
添加到系统调用的末尾,从而解决了问题。