如何从我的cronjob中保留curl输出的邮件?

Rus*_* C. 5 cron curl

我编写了一个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
Run Code Online (Sandbox Code Playgroud)

我正在使用一个简单的Perl system()调用来调用CURL.有谁知道我可以提供什么命令行参数CURL来关闭上传进度的报告?

fri*_*edo 10

这里有一些选择.

您可以使用-s--silent标记来静音所有输出.从curl联机帮助页:

  -s/--silent
         Silent  or  quiet  mode. Don’t show progress meter or error mes-
         sages.  Makes Curl mute.
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用反引号或运算符将输出捕获到变量,而不是使用systemPerl脚本中的某些内容来运行.curlqx

或者,您可以curl使用管道打开您的进程以捕获其STDOUT并稍后查看.

最后,您可能希望探索将系统调用替换curl为本机Perl库,如LWP :: UserAgentMechanize.


Rus*_* C. 0

由于某种原因,我的 CURL 版本无法识别 -s 或 --silent,我知道这没有意义。正如@Friedo 建议的那样,我尝试使用反引号或 qx 运算符,它们也没有摆脱不需要的上传进度报告。最终我采用了非常不优雅的方式添加>/dev/null 2>&1到系统调用的末尾,从而解决了问题。