net/check/zadanie3/hq-cli.sh

81 lines
4.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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