#!/bin/bash # ============================================================ # ПРОВЕРКА ЗАДАНИЯ 3 — HQ-CLI: доверие CA, https без -k, # принтер по умолчанию, каталог /backup # (только читает состояние!) Агент Кибер Бэкап — вручную. # ============================================================ NAME="hq-cli" LOG="check_${NAME}_z3.txt" OK=0; FAIL=0; SKIP=0 ok() { echo "[OK] $1"; OK=$((OK+1)); } fail() { echo "[FAIL] $1 — $2"; FAIL=$((FAIL+1)); } skip() { echo "[ПРОПУЩЕНО] $1"; SKIP=$((SKIP+1)); } check_var() { if [[ -z "${!2}" ]]; then skip "$1 — не задано $2"; return 1; fi; return 0; } expect_eq() { if [[ "$3" == "$2" ]]; then ok "$1"; else fail "$1" "ожидалось '$2', получено '$3'"; fi; } # ================= ПЕРЕМЕННЫЕ (заполните для проверки) ================= CA_ANCHORS_DIR="/etc/pki/ca-trust/source/anchors" # ПРОВЕРИТЬ на РЕД ОС 8 CA_CN="au-team-CA" # CN корневого сертификата (переменная CA_SUBJECT) WEB_DOMAIN="web.au-team.irpo" DOCKER_DOMAIN="docker.au-team.irpo" WEB_LOGIN="WEB" # по заданию 3 п. 3 WEB_PASS="P@ssw0rd" CLIENT_PRINTER="pdf_printer" # локальное имя принтера на HQ-CLI BACKUP_DIR="/backup" # каталог хранилища по заданию 3 п. 9 main () { echo "=== Проверка задания 3: HQ-CLI ===" # --- 1. Доверие корневому сертификату (установлен в хранилище) --- if [[ -d "$CA_ANCHORS_DIR" ]] && ls "$CA_ANCHORS_DIR" | grep -q .; then LISTED=$(ls "$CA_ANCHORS_DIR" | tr '\n' ' ') echo "[ИНФО] в anchors: $LISTED" SKIP=$((SKIP+1)) # ПРОВЕРИТЬ: имя файла бывает любым — критерий ниже через trust list if command -v trust &>/dev/null; then if trust list 2>/dev/null | grep -q "cn.*$CA_CN"; then ok "корневой сертификат ($CA_CN) в хранилище" else fail "корневой CA" "$CA_CN не найден в trust list"; fi else skip "trust list — команда trust не найдена (ПРОВЕРИТЬ на РЕД ОС 8)" fi else fail "anchors $CA_ANCHORS_DIR" "каталог не найден или пуст — файл CA доставлен вручную?" fi # --- 2. https без предупреждений (curl без -k) --- check_var "web-домен" WEB_DOMAIN && { CODE=$(curl -s -o /dev/null -w "%{http_code}" -u "$WEB_LOGIN:$WEB_PASS" "https://$WEB_DOMAIN/" 2>/dev/null) if grep -qE "^(200|301|302)$" <<<"$CODE"; then ok "https://$WEB_DOMAIN — соединение без ошибок сертификата (код $CODE)" else fail "https $WEB_DOMAIN" "код '$CODE' (0 = ошибка соединения/сертификата)"; fi; } check_var "docker-домен" DOCKER_DOMAIN && { CODE=$(curl -s -o /dev/null -w "%{http_code}" "https://$DOCKER_DOMAIN/" 2>/dev/null) if grep -qE "^(200|301|302)$" <<<"$CODE"; then ok "https://$DOCKER_DOMAIN — без ошибок сертификата ($CODE)" else fail "https $DOCKER_DOMAIN" "код '$CODE'"; fi; } # --- 3. Принтер по умолчанию --- if command -v lpstat &>/dev/null; then DEFAULT_P=$(lpstat -d 2>/dev/null | awk '{print $NF}') expect_eq "принтер по умолчанию" "$CLIENT_PRINTER" "$DEFAULT_P" if lpstat -p "$CLIENT_PRINTER" &>/dev/null; then ok "принтер $CLIENT_PRINTER зарегистрирован" else fail "принтер $CLIENT_PRINTER" "не найден в lpstat -p"; fi else skip "lpstat — утилита CUPS не найдена (dnf install cups)"; fi # --- 4. Каталог /backup (узел хранилища) --- if [[ -d "$BACKUP_DIR" ]]; then ok "каталог $BACKUP_DIR существует" else fail "каталог $BACKUP_DIR" "не найден"; fi echo "" echo "=== Проверить вручную ===" echo " — установка агента Кибер Бэкап на HQ-CLI (GUI), подключение к HQ-SRV" echo " — предупреждения браузера (откройте страницу в Яндекс Браузере)" echo " — печать: echo test | lp -d $CLIENT_PRINTER; проверьте появление pdf у принтера" echo "" echo "=== Итог: OK=$OK FAIL=$FAIL ПРОПУЩЕНО=$SKIP ===" [[ $FAIL -eq 0 ]] } main 2>&1 | tee "$LOG" STATUS=${PIPESTATUS[0]} echo "Лог сохранён: $LOG" exit $STATUS