#!/bin/bash # healthcheck.sh — проверка готовности bj-server после установки на Astra Linux. # Запускается на самой Astra Linux ВМ, печатает зелёные/жёлтые/красные галочки. set -uo pipefail ok() { echo -e " \033[1;32m✓\033[0m $*"; } warn() { echo -e " \033[1;33m⚠\033[0m $*"; } fail() { echo -e " \033[1;31m✗\033[0m $*"; } echo "================================================================" echo " Bridge-and-Join-s — проверка состояния" echo "================================================================" # 1. ОС echo echo "[1] Операционная система" if [ -r /etc/astra_version ]; then ok "Astra Linux: $(cat /etc/astra_version)" else warn "Не Astra Linux — ИШ может не запуститься" fi # 2. Пользователь bj echo echo "[2] Пользователь и каталоги" id bj >/dev/null 2>&1 && ok "пользователь bj существует" || fail "пользователь bj не создан" [ -d /opt/bj ] && ok "/opt/bj существует" || fail "/opt/bj не найден" [ -x /opt/bj/bj-server ] && ok "/opt/bj/bj-server исполняемый" || fail "/opt/bj/bj-server отсутствует" [ -d /var/lib/bj/.bj ] && ok "/var/lib/bj/.bj существует" || warn "/var/lib/bj/.bj не создан" # 3. systemd echo echo "[3] systemd сервис" if systemctl is-enabled --quiet bj-server 2>/dev/null; then ok "bj-server.service enabled" else warn "bj-server.service не enabled" fi if systemctl is-active --quiet bj-server 2>/dev/null; then ok "bj-server.service active" else fail "bj-server.service не active — systemctl status bj-server" fi # 4. HTTP echo echo "[4] HTTP-эндпоинты" HTTP_OK=0 for path in / /admin/ /admin/wizard /admin/help/architecture; do code=$(curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1:8080$path" 2>/dev/null || echo "—") if [ "$code" = "200" ] || [ "$code" = "303" ]; then ok "GET $path → $code" HTTP_OK=$((HTTP_OK+1)) else fail "GET $path → $code" fi done # 5. PostgreSQL echo echo "[5] PostgreSQL" if command -v podman >/dev/null 2>&1; then if podman ps --format '{{.Names}}' 2>/dev/null | grep -qx bj-postgres; then ok "контейнер bj-postgres работает" else warn "контейнер bj-postgres не запущен" fi else warn "podman не установлен" fi if pg_isready -h 127.0.0.1 -p 5432 -U bj >/dev/null 2>&1; then ok "PostgreSQL отвечает на :5432" else warn "PostgreSQL :5432 недоступен" fi # 6. Валидата echo echo "[6] СКЗИ Валидата (для ИШ)" VAL_FOUND=0 for path in /opt/Validata /opt/validata-csp /opt/Validata-CSP; do [ -d "$path" ] && { ok "найдена в $path"; VAL_FOUND=1; break; } done [ "$VAL_FOUND" = 0 ] && warn "не установлена (запроси у НРД soed@nsd.ru, потом sudo bash deploy/astra/install-validata.sh)" # 7. ИШ echo echo "[7] Интеграционный шлюз (ИШ)" if command -v igate >/dev/null 2>&1; then ok "igate в PATH: $(which igate)" elif [ -x /opt/igate/igate ]; then ok "igate в /opt/igate/" else warn "ИШ не установлен (sudo bash deploy/astra/install-ish.sh)" fi # 8. Сетевые порты echo echo "[8] Сетевые порты" if command -v ss >/dev/null 2>&1; then PORTS=$(ss -tlnp 2>/dev/null | awk 'NR>1{print $4}') echo "$PORTS" | grep -q ':8080$' && ok ":8080 (bj-server) слушает" || fail ":8080 не слушает" echo "$PORTS" | grep -q ':5432$' && ok ":5432 (postgres) слушает" || warn ":5432 не слушает" echo "$PORTS" | grep -q ':8090$' && ok ":8090 (предполагаемый ИШ) слушает" || warn ":8090 (ИШ) не слушает" fi # Итог echo echo "================================================================" echo " Готово. Подробнее:" echo " journalctl -u bj-server -f" echo " http://$(hostname -I | awk '{print $1}'):8080/admin/" echo "================================================================"