Как отключить перенаправление сообщений в curl - PullRequest
1 голос
/ 13 декабря 2011

У меня есть хороший bash-скрипт, который использует curl для входа на сайт и запускает действие, которое все работает хорошо.

На выходе есть шум, который я хотел бы удалить. Перенаправление для страницы аутентификации (которая работает) генерирует следующее сообщение:

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/products">here</a>.</h2>
</body></html>

Я просто хочу отключить генерацию этого сообщения, но не могу понять, как это сделать.

Ответы [ 2 ]

1 голос
/ 26 января 2012

Похоже, что вы уже поняли свой вопрос, но если нет, то вы можете сделать это:

curl --silent --fail

"- fail or -f" не будет отображать никаких ошибок вывода HTTP на серверах, а "--silent и -s" должны сделать его абсолютно бесшумным, однако обычно, когда вы добираетесь до "перемещенного объекта", вы можете использовать «-L» для автоматического перенаправления, чтобы избежать этого вывода.

Я надеюсь, что это ответ на ваш вопрос и для получения дополнительной информации: http://curl.haxx.se/docs/manpage.html или man curl

0 голосов
/ 23 мая 2014

В комментарии вы сказали: «Я бы предпочел не перенаправлять вывод std, так как хочу видеть подлинные ошибки». Если бы это был я, я бы захватил стандартный вывод, проверил, был ли это ответ об ошибке, и если да, отобразил бы его.

например.,

rslt=$( curl ... )
stat=${rslt##*\<rsp stat=\"}
stat=${stat%%\"\>*}

if [[ "$stat" == "fail" ]]; then
    # parse: <err code="4" msg="your bad" />
    code=${rslt##*\<err code=\"}
    code=${code%%\"*}
    msg=${rslt##*msg=\"}
    msg=${msg%%\"*}
fi

echo "curl failed: $stat: ($code): $msg"

Конечно, это очень зависит от формата ответа HTML, поэтому он сломается, если сервер изменит формат ответа.

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