Шаг 7 из 8 · лаба · 25 мин
Напиши healthcheck по договору
Выкладке нужен скрипт: готов ли адрес принимать трафик. Ответ — строкой OK или FAIL и кодом завершения, даже когда сервер молчит.
Ситуация
Новую версию приложения выкладка пускает под трафик не сразу: сначала спрашивает скрипт
~/bash-lab/healthcheck.sh, готов ли адрес. Выкладка смотрит на код завершения, дежурный
читает строку вывода. Скрипта пока нет — есть заготовка со строкой shebang.
Для проб на машине работает тестовое приложение http://127.0.0.1:8181:
| Путь | Ответ |
|---|---|
/ready |
200 |
/unready |
503 |
/empty |
204 |
/redirect |
302 на /ready |
/slow |
200, но через 10 секунд |
На порту 8182 никто не слушает.
Задача
Допиши ~/bash-lab/healthcheck.sh по договору с выкладкой:
- Выкладка запускает скрипт по пути:
~/bash-lab/healthcheck.sh URL. - Сервер ответил 200 — скрипт печатает в stdout строку
OKи выходит с кодом 0. - Сервер ответил иначе (503, 204, 302, 404) —
FAILи код 1. За перенаправлением скрипт не идёт. - Сервер не принимает соединение —
FAILи код 1. - Ответа нет 2 секунды —
FAILи код 1; скрипт заканчивается сам не позже чем через 3 секунды. - Без адреса или с двумя аргументами — stdout пуст, в stderr строка
Usage: healthcheck.sh URL, код 2.
Когда сервер ответил — с любым кодом, — stderr остаётся пустым: строку там выкладка считает сбоем самой проверки.
Проверка запускает твой скрипт от student на этих адресах и на своих — с другими путями и ответами.
Интернета на машине нет, всё нужное уже установлено.
Лаба · самостоятельно
Команды в этой лабе не даны: набирай их в терминале сам. Цели проверяются на машине после каждой команды.
Цели
0 из 6-
~/bash-lab/healthcheck.sh запускается по пути как команда — ещё не выполнена
-
Ответ 200 — в stdout OK, код 0, stderr пуст — ещё не выполнена
-
Любой другой ответ сервера — FAIL, код 1, stderr пуст — ещё не выполнена
-
Сервер не принимает соединение — FAIL, код 1 — ещё не выполнена
-
Ответа нет 2 секунды — FAIL, код 1, скрипт заканчивается сам за 3 секунды — ещё не выполнена
-
Без адреса или с двумя аргументами — Usage в stderr, stdout пуст, код 2 — ещё не выполнена
Машина запускается
Подсказки
0 из 3Цели лабы
0 из 6-
~/bash-lab/healthcheck.sh запускается по пути как команда — ещё не выполнена
-
Ответ 200 — в stdout OK, код 0, stderr пуст — ещё не выполнена
-
Любой другой ответ сервера — FAIL, код 1, stderr пуст — ещё не выполнена
-
Сервер не принимает соединение — FAIL, код 1 — ещё не выполнена
-
Ответа нет 2 секунды — FAIL, код 1, скрипт заканчивается сам за 3 секунды — ещё не выполнена
-
Без адреса или с двумя аргументами — Usage в stderr, stdout пуст, код 2 — ещё не выполнена
Цели проверяются на машине после каждой команды.