Linux Labs

Bash: обработка текста и скрипты / Ступень 7 из 9

Код завершения и healthcheck

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 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 по договору с выкладкой:

  1. Выкладка запускает скрипт по пути: ~/bash-lab/healthcheck.sh URL.
  2. Сервер ответил 200 — скрипт печатает в stdout строку OK и выходит с кодом 0.
  3. Сервер ответил иначе (503, 204, 302, 404) — FAIL и код 1. За перенаправлением скрипт не идёт.
  4. Сервер не принимает соединение — FAIL и код 1.
  5. Ответа нет 2 секунды — FAIL и код 1; скрипт заканчивается сам не позже чем через 3 секунды.
  6. Без адреса или с двумя аргументами — 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 — ещё не выполнена
Ctrl+Enter
Запустит машину node1 · Ubuntu 24.04

Машина запускается

Подсказки

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 — ещё не выполнена
node1 Ubuntu 24.04

Цели лабы

0 из 6
  • ~/bash-lab/healthcheck.sh запускается по пути как команда — ещё не выполнена
  • Ответ 200 — в stdout OK, код 0, stderr пуст — ещё не выполнена
  • Любой другой ответ сервера — FAIL, код 1, stderr пуст — ещё не выполнена
  • Сервер не принимает соединение — FAIL, код 1 — ещё не выполнена
  • Ответа нет 2 секунды — FAIL, код 1, скрипт заканчивается сам за 3 секунды — ещё не выполнена
  • Без адреса или с двумя аргументами — Usage в stderr, stdout пуст, код 2 — ещё не выполнена
Загрузка…