Как получить правильный код ошибки из curl, когда передача была закрыта до получения всего файла

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

Вызов curl завершается с:

curl: (18) transfer closed with 7512708716 bytes remaining to read

Хотя эта ошибка возникает, код возврата остается 200, так что мой сценарий «думает», что все в порядке.

Как я могу сказать curl, чтобы получить другой код возврата, отличный от http-200?

0
03.05.2016, 13:45
2 ответа

Ошибка:

rc=$( curl ... )

Это дало Мне вернули код http, потому что я заполнил $ rc стандартным выводом curl. После этого я должен заполнить rc с помощью $? .

После изменения кода на:

httprc=$( curl ...)
rc=$?

мне вернули оба кода возврата. Спасибо meuh !

1
28.01.2020, 04:51

curl --fail выполняет часть того, что вы хотите:

из man curl :

-f, --fail

(HTTP) Ошибка без вывода сообщений (нет вывода вообще) на ошибки сервера. В основном это делается для лучшего включения скриптов и т. Д., Чтобы лучше справляться с неудачными попытками. В обычных случаях, когда HTTP-сервер не может доставить документ, он возвращает HTML-документ с указанием этого (который часто также описывает причину и многое другое). Этот флаг предотвратит вывод команды curl и возврат ошибки 22.

Этот метод не является отказоустойчивым, и бывают случаи, когда неуспешные коды ответа будут проскальзывать, особенно когда задействована аутентификация (коды ответов 401 и 407).

Но он блокирует вывод на экран.

1
28.01.2020, 04:51

Теги

Похожие вопросы