net/zadanie3/br-srv.sh

96 lines
4.5 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 (Linux / РЕД ОС 8)
# 1. Импорт пользователей: import.sh + users.csv из Additional.iso
# (import.sh сам запрашивает путь к файлу-источнику)
# 7. Инвентаризация через Ansible: плейбук из образа, отчёты в
# /etc/ansible/PC-INFO в формате .yml (имя файла = имя ПК)
# ============================================================
# --- Проверка прав root ---
if [[ $EUID -ne 0 ]]; then
echo "Запустите скрипт с правами root (sudo bash br-srv.sh)"
exit 1
fi
# ================= ПЕРЕМЕННЫЕ (заполните перед запуском) =================
EXAM_TZ="Europe/Moscow" # проверить на экзамене
ISO_DIR="/mnt/iso" # точка монтирования Additional.iso
# --- 1. Импорт пользователей ---
IMPORT_SCRIPT="$ISO_DIR/import.sh" # по заданию — в корне образа
USERS_CSV="$ISO_DIR/users.csv" # файл-источник по заданию
# --- 7. Плейбук для инвентаризации ---
ANSIBLE_DIR="/etc/ansible"
PLAYBOOK_SRC="$ISO_DIR/playbook" # директория плейбука в образе
PLAYBOOK_DST="$ANSIBLE_DIR/playbook" # куда копируем на BR-SRV
REPORT_DIR="$ANSIBLE_DIR/PC-INFO" # отчёты .yml по имени ПК
# ============ Проверка заполнения переменных ============
MISSING=()
for NAME in EXAM_TZ; do
[[ -z "${!NAME}" ]] && MISSING+=("$NAME")
done
if [[ ${#MISSING[@]} -gt 0 ]]; then
echo "Заполните переменные в начале скрипта: ${MISSING[*]}"
exit 1
fi
echo "=== Настройка BR-SRV, задание 3 ==="
# --- 1. Импорт пользователей (import.sh сам спрашивает путь) ---
echo "--- Импорт пользователей из $USERS_CSV ---"
if [[ -x "$IMPORT_SCRIPT" || -f "$IMPORT_SCRIPT" ]]; then
echo "Скрипт найден: $IMPORT_SCRIPT"
echo "Он интерактивно запрашивает файл-источник — запустите вручную:"
echo " bash $IMPORT_SCRIPT и в ответ на вопрос укажите $USERS_CSV"
echo "После импорта проверьте: samba-tool user list"
# Проверку запускаем только если обе вещи на месте:
bash "$IMPORT_SCRIPT" || echo "ЗАПУСТИТЕ ВРУЧНУЮ с указанием $USERS_CSV (см. выше)"
else
echo "ДЕЛАЕТСЯ ВРУЧНУЮ: $IMPORT_SCRIPT не найден — смонтируйте Additional.iso в $ISO_DIR"
fi
# --- 2. Плейбук для инвентаризации машин HQ-SRV и HQ-CLI ---
echo "--- Плейбук инвентаризации ---"
if [[ -d "$PLAYBOOK_SRC" ]]; then
mkdir -p "$PLAYBOOK_DST"
cp -f "$PLAYBOOK_SRC"/* "$PLAYBOOK_DST/" 2>/dev/null \
|| echo "ПРОВЕРИТЬ: в $PLAYBOOK_SRC нет файлов?"
ls -l "$PLAYBOOK_DST"
else
echo "ДЕЛАЕТСЯ ВРУЧНУЮ: нет $PLAYBOOK_SRC — смонтируйте Additional.iso в $ISO_DIR"
fi
mkdir -p "$REPORT_DIR"
echo "Плейбуки в $PLAYBOOK_DST. Запуск (с BR-SRV, из задания 2 настроен ansible):"
# Запускаем первый найденный .yml (имя файла в образе нам неизвестно заранее)
PLAYBOOK_YML=""
shopt -s nullglob
for F in "$PLAYBOOK_DST"/*.yml "$PLAYBOOK_DST"/*.yaml; do
PLAYBOOK_YML="$F"
break
done
shopt -u nullglob
if [[ -n "$PLAYBOOK_YML" ]]; then
echo " ansible-playbook $PLAYBOOK_YML"
ansible-playbook "$PLAYBOOK_YML" \
|| echo "ПРОВЕРИТЬ: плейбук не отработал — посмотрите его содержимое и ошибки"
else
echo "ДЕЛАЕТСЯ ВРУЧНУЮ: .yml не найден в $PLAYBOOK_DST"
fi
echo ""
echo "Отчёты должны появиться в $REPORT_DIR (имя файла = имя ПК):"
ls -l "$REPORT_DIR" || true
timedatectl set-timezone "$EXAM_TZ"
echo ""
echo "=== Самопроверка на BR-SRV ==="
echo "Импортированные пользователи (должны появиться из users.csv):"
samba-tool user list
echo ""
echo "Отчёты инвентаризации:"
ls -l "$REPORT_DIR"