#!/bin/bash export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 # ==DIS/AUTOEXEC== # === Nas Mount === # 02_mount_nas.sh 🛧 Монтирование сетевого ресурса (Windows SMB) # Скрипт подключает расшаренную папку по SMB в каталог /mnt/backup_nas # set -euo pipefail # Проверка наличия утилиты mount.cifs if ! command -v mount.cifs >/dev/null 2>&1; then echo "❌ Не установлена утилита mount.cifs (пакет cifs-utils)." echo "📦 Установите её с помощью: sudo apt install cifs-utils" exit 1 fi # === ░░ БЛОК: ФАЙЛ КОНФИГУРАЦИИ ░░ === CONFIG_FILE="$(dirname "$0")/nas_mount.conf" if [[ ! -f "$CONFIG_FILE" ]]; then cat > "$CONFIG_FILE" </dev/null; then echo "❌ Хост $NAS_IP недоступен по сети." return fi if mountpoint -q "$mount_point"; then local current_source expected_source current_source=$(findmnt -n -o SOURCE --target "$mount_point") expected_source="//$NAS_IP/$SHARE_NAME" if [[ "$current_source" == "$expected_source" ]]; then echo "✅ Ресурс уже примонтирован: $expected_source → $mount_point" echo "ℹ️ Повторное монтирование не требуется." return else echo "⚠️ Каталог $mount_point уже занят другим ресурсом:" echo " Текущее подключение: $current_source" echo " Ожидаемое: $expected_source" echo "" echo "1 - 🔄 Отмонтировать и примонтировать заново" echo "2 - 📁 Примонтировать в другой каталог" echo "0 - ❌ Отмена" read -rp "👉 Ваш выбор: " choice case "$choice" in 1) echo "🔌 Отмонтирование $mount_point..." sudo umount "$mount_point" ;; 2) read -rp "📂 Введите альтернативный каталог (например: /mnt/nas_alt): " alt_mount [[ -z "$alt_mount" ]] && echo "❎ Пустой путь. Отмена." && return mount_point="$alt_mount" sudo mkdir -p "$mount_point" ;; *) echo "⏭️ Пропуск монтирования." return ;; esac fi fi echo "🔗 Монтирование ресурса..." if sudo mount -t cifs "//$NAS_IP/$SHARE_NAME" "$mount_point" \ -o username="$NAS_USER",password="$NAS_PASS",uid=$(id -u),gid=$(id -g),vers=3.0,iocharset=utf8; then echo "✅ Успешно примонтировано в $mount_point" else echo "❌ Ошибка монтирования." fi } # === ░░ КОНЕЦ ФУНКЦИИ ░░ === # === ░░ БЛОК: МЕНЮ ПОЛЬЗОВАТЕЛЯ ░░ === while true; do echo "" echo "🛠️ Меню NAS-подключения" echo "1 - 🔗 Подключить сетевой диск (по конфигурации)" echo "2 - ✏️ Редактировать конфигурацию" echo "3 - 🧹 Удалить файл конфигурации" echo "4 - 🔓 Разовое подключение (без сохранения)" echo "0 - ❌ Выход" read -rp "👉 Ваш выбор: " opt echo "" case "$opt" in 0) echo "🚪 Выход." exit 0 ;; 1) if [[ ! -f "$CONFIG_FILE" ]]; then echo "❌ Файл конфигурации не найден. Сначала создайте его." continue fi # shellcheck disable=SC1090 source "$CONFIG_FILE" if [[ "$NAS_IP" == "" || "$NAS_USER" == "" || "$NAS_PASS" == "" ]]; then echo "❌ Конфигурация не заполнена. Пожалуйста, отредактируйте $CONFIG_FILE." continue fi mount_nas ;; 2) echo "📝 Открываю конфигурацию в nano..." nano "$CONFIG_FILE" ;; 3) echo "⚠️ Удалить конфигурационный файл $CONFIG_FILE? (y/N)" read -r confirm if [[ "$confirm" =~ ^[Yy]$ ]]; then rm -f "$CONFIG_FILE" echo "🗑️ Удалено." else echo "❎ Отмена удаления." fi ;; 4) echo "🔓 Разовое подключение без сохранения конфигурации" read -rp "🌐 IP NAS-сервера: " NAS_IP read -rp "📂 Имя расшаренной папки: " SHARE_NAME read -rp "👤 Имя пользователя: " NAS_USER read -rsp "🔑 Пароль: " NAS_PASS echo "" mount_nas ;; *) echo "❗ Неверный выбор." ;; esac done # === ░░ КОНЕЦ БЛОКА: МЕНЮ ПОЛЬЗОВАТЕЛЯ ░░ ===