Коды выхода curl
Урок 30 из 47 курса Сетевое взаимодействие в терминале на Coddy.
В одной команде curl есть два совершенно разных понятия ошибки, и их смешение приводит к настоящим сбоям.
Код состояния — это ответ сервера: 200, 404, 500. Код завершения показывает, удалось ли curl вообще установить соединение.
Код 404 означает успешное взаимодействие. Сервер был доступен, понял запрос и ответил. curl завершается с кодом 0. Скрипт, который проверяет только код завершения, сочтёт это нормальным — это классический источник конвейеров, которые завершаются успешно, скачав страницу с ошибкой.
curl -s -o /dev/null http://127.0.0.1:9120/missing
echo $? # 0, потому что сам запрос сработалЕсли при недопустимом коде состояния нужно завершать выполнение с ошибкой, укажите --fail: тогда curl завершится с ненулевым кодом при ответах 4xx и 5xx. В противном случае самостоятельно проверьте %{http_code}.
Задание
СложноПокажите, что ответ 404 всё ещё означает успешный запрос.
- Запустите сервер, обслуживающий папку на порту 9120
- Запросите несуществующую страницу и выведите
status=с кодом состояния - На следующей строке выведите
exit=с кодом выхода curl
Ожидаемый вывод:
status=404
exit=0Считайте
$?сразу после команды curl, которая его создала.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Сетевое взаимодействие в терминале
3Порты и сокеты
Что такое портХорошо известные портыЛокальный хостПрослушивание и подключениеПовторение: порты6curl в деталях
Просмотр заголовковСохранение ответовПользовательские заголовкиСтатус и время выполненияКоды выхода curlПовторение: флаги curl9Аутентификация и отладка
API-ключи и BearerUser-AgentТайм-ауты и повторные попыткиАнализ ошибкиПовторение: отладкаПотренируйтесь самостоятельно: Песочница Terminal