Menu
Coddy logo textTech

Коды выхода 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}.

challenge icon

Задание

Сложно

Покажите, что ответ 404 всё ещё означает успешный запрос.

  1. Запустите сервер, обслуживающий папку на порту 9120
  2. Запросите несуществующую страницу и выведите status= с кодом состояния
  3. На следующей строке выведите exit= с кодом выхода curl

Ожидаемый вывод:

status=404
exit=0

Считайте $? сразу после команды curl, которая его создала.

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Сетевое взаимодействие в терминале

Потренируйтесь самостоятельно: Песочница Terminal