74 lines
3.9 KiB
Bash
74 lines
3.9 KiB
Bash
#!/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
|