Проверяем HTTP endpoint из shell-скрипта!
Иногда нужно быстро понять, жив ли сервис: API, health endpoint, nginx location или внутренний backend.
Начнём с URL:
url="https://example.com/health"
Получим только HTTP-код:
code="$(curl -s -o /dev/null -w "%{http_code}" "$url")"
Теперь проверим диапазон:
if [ "$code" -ge 200 ] && [ "$code" -lt 300 ]; then
echo "OK: $code"
else
echo "FAIL: $code"
fi
Добавим timeout, чтобы скрипт не завис:
code="$(curl -sS --max-time 5 \
-o /dev/null -w "%{http_code}" "$url")"
Если нужен retry:
for i in 1 2 3; do
code="$(curl -s --max-time 5 -o /dev/null -w "%{http_code}" "$url")"
[ "$code" = "200" ] && break
sleep 2
done
После этого можно вернуть exit code для CI:
[ "$code" = "200" ] || exit 1
Такую проверку удобно использовать в deploy-скриптах, cron, CI/CD и простом мониторинге.
➡️ DevOps Ready | #практика
Иногда нужно быстро понять, жив ли сервис: API, health endpoint, nginx location или внутренний backend.
Начнём с URL:
url="https://example.com/health"
Получим только HTTP-код:
code="$(curl -s -o /dev/null -w "%{http_code}" "$url")"
Теперь проверим диапазон:
if [ "$code" -ge 200 ] && [ "$code" -lt 300 ]; then
echo "OK: $code"
else
echo "FAIL: $code"
fi
Добавим timeout, чтобы скрипт не завис:
code="$(curl -sS --max-time 5 \
-o /dev/null -w "%{http_code}" "$url")"
Если нужен retry:
for i in 1 2 3; do
code="$(curl -s --max-time 5 -o /dev/null -w "%{http_code}" "$url")"
[ "$code" = "200" ] && break
sleep 2
done
После этого можно вернуть exit code для CI:
[ "$code" = "200" ] || exit 1
Такую проверку удобно использовать в deploy-скриптах, cron, CI/CD и простом мониторинге.
➡️ DevOps Ready | #практика