#!/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="Asia/Yekaterinburg" # по заданию — Екатеринбург 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"