81 lines
4.6 KiB
Bash
81 lines
4.6 KiB
Bash
#!/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
|