Как я могу сохранить вывод curl из почты из моего cronjob? - PullRequest
5 голосов
/ 23 апреля 2010

Я написал Perl-скрипт, который запускается как ежедневное задание crontab, загружающее файлы в Amazon S3 через CURL.Я хочу, чтобы результаты работы 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, чтобы отключить отчеты о ходе загрузки?

Ответы [ 2 ]

10 голосов
/ 23 апреля 2010

Здесь есть несколько вариантов.

Вы можете использовать флаг -s или --silent, чтобы отключить все выходные данные.Из справочной страницы curl:

  -s/--silent
         Silent  or  quiet  mode. Don’t show progress meter or error mes-
         sages.  Makes Curl mute.

Или вместо использования чего-то вроде system в вашем скрипте Perl для запуска curl, вы можете использовать обратные метки или qx оператор для захвата вывода в переменную.

Или вы можете открыть процесс curl с помощью трубы , чтобы захватить его STDOUT и посмотреть на него позже.

Наконец, вы можете изучить замену системных вызовов на curl собственной библиотекой Perl, такой как LWP :: UserAgent или Mechanize .

0 голосов
/ 24 апреля 2010

По какой-то причине моя версия CURL не распознавала -s или --silent, что, как я знаю, не имеет смысла.Как предложил @Friedo, я попытался использовать backticks или оператор qx, который также не избавился от нежелательных отчетов о ходе загрузки.В конечном итоге я пошел очень нелегким путем добавления >/dev/null 2>&1 в конец системного вызова, что решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...