net/check/zadanie3/br-srv.sh

74 lines
3.9 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 — BR-SRV: импорт пользователей, PC-INFO
# (только читает состояние; samba-tool требует root)
# Кибер Бэкап сервер — вручную (в конце список).
# ============================================================
NAME="br-srv"
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)); }
root_or_skip() { if [[ $EUID -ne 0 ]]; then skip "$1 (нужен root)"; return 1; fi; return 0; }
check_var() { if [[ -z "${!2}" ]]; then skip "$1 — не задано $2"; return 1; fi; return 0; }
# ================= ПЕРЕМЕННЫЕ (заполните для проверки) =================
EXPECTED_USERS="" # список имён из users.csv через пробел (заполните после импорта)
# если пусто — пункт [ПРОПУЩЕНО], проверяем только факт import
ANSIBLE_DIR="/etc/ansible"
REPORT_DIR="$ANSIBLE_DIR/PC-INFO" # отчёты инвентаризации по заданию
EXPECTED_REPORTS="hq-srv hq-cli" # имена файлов-отчётов = имена ПК (коротные из hostname,
# без домена — уточните: с точками или подчёркиваниями?)
main () {
echo "=== Проверка задания 3: BR-SRV ==="
# --- 1. Импорт пользователей из users.csv ---
if root_or_skip "samba-tool (требует root)"; then
if ! command -v samba-tool &>/dev/null; then
skip "samba-tool — не найден"
elif [[ -n "$EXPECTED_USERS" ]]; then
USER_LIST=$(samba-tool user list 2>/dev/null)
for USER in $EXPECTED_USERS; do
if grep -qx "$USER" <<<"$USER_LIST"; then ok "импортирован $USER"
else fail "импорт $USER" "не найден в списке домена"; fi
done
else
N_TOTAL=$(samba-tool user list 2>/dev/null | wc -l)
if [[ $N_TOTAL -gt 5 ]]; then
ok "доменных пользователей больше 5 (сверх hquser1–5): $N_TOTAL"
else fail "импорт пользователей" "в домене только $N_TOTAL пользователей — import.sh не выполнен?"
fi
fi
fi
# --- 2. Отчёты PC-INFO (.yml, имя файла = имя ПК) ---
if [[ -d "$REPORT_DIR" ]]; then
YML_COUNT=$(ls "$REPORT_DIR"/*.yml 2>/dev/null | wc -l)
if [[ $YML_COUNT -ge 2 ]]; then ok "в $REPORT_DIR есть $YML_COUNT отчёт(ов) .yml"
else fail "отчёты $REPORT_DIR" "ожидалось ≥2 .yml файлов, найдено $YML_COUNT"; fi
for PC in $EXPECTED_REPORTS; do
if ls "$REPORT_DIR"/$PC*.yml &>/dev/null; then ok "отчёт для $PC присутствует ($(ls "$REPORT_DIR"/$PC*.yml 2>/dev/null | head -1))"
else fail "отчёт $PC" "файла вида $PC*.yml нет (имена могут отличаться — см. переменную EXPECTED_REPORTS)"; fi
done
else
fail "каталог $REPORT_DIR" "не существует"
fi
echo ""
echo "=== Проверить вручную ==="
echo " — открыть один .yml файл: там имя ПК и IP-адрес"
echo " — Кибер Бэкап сервер HQ-SRV работает (скриншот консоли/данные резервных проверок)"
echo ""
echo "=== Итог: OK=$OK FAIL=$FAIL ПРОПУЩЕНО=$SKIP ==="
[[ $FAIL -eq 0 ]]
}
main 2>&1 | tee "$LOG"
STATUS=${PIPESTATUS[0]}
echo "Лог сохранён: $LOG"
exit $STATUS