projects:linux:manual_backup_scripts:mount_nas
Это старая версия документа!
Подключение сетевого ресурса
Монтирование сетевого ресурса.
Можно подключить единоразово без сохранения конфигурации или прописать конфигурацию чтобы в будущем не вводить вручную.
Файл конфигурации (представлен ниже) создается автоматически при запуске скрипта.
# IP-адрес NAS (в кавычках, например: "192.168.1.100") NAS_IP="<IP-ADDRESS>" # Имя расшаренной папки (например: "PiBackup") SHARE_NAME="PiBackup" # Имя пользователя (в кавычках — обязательно, особенно если есть пробелы) NAS_USER="<USERNAME>" # Пароль (в кавычках — ОБЯЗАТЕЛЬНО, если есть пробелы или спецсимволы) NAS_PASS="<PASSWORD>"
- mount_nas.sh
#!/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 # === ░░ БЛОК: ФАЙЛ КОНФИГУРАЦИИ ░░ === CONFIG_FILE="$(dirname "$0")/nas_mount.conf" if [[ ! -f "$CONFIG_FILE" ]]; then cat > "$CONFIG_FILE" <<EOF # IP-адрес NAS (в кавычках, например: "192.168.1.100") NAS_IP="<IP-ADDRESS>" # Имя расшаренной папки (например: "PiBackup") SHARE_NAME="PiBackup" # Имя пользователя (в кавычках — обязательно, особенно если есть пробелы) NAS_USER="<USERNAME>" # Пароль (в кавычках — ОБЯЗАТЕЛЬНО, если есть пробелы или спецсимволы) NAS_PASS="<PASSWORD>" EOF echo "⚠️ Создан конфигурационный файл по умолчанию: $CONFIG_FILE" echo "✏️ Пожалуйста, отредактируй его или выбери пункт меню 2." 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" == "<IP-ADDRESS>" || "$NAS_USER" == "<USERNAME>" || "$NAS_PASS" == "<PASSWORD>" ]]; then echo "❌ Конфигурация не заполнена. Пожалуйста, отредактируйте $CONFIG_FILE." continue fi ;& 4) if [[ "$opt" == 4 ]]; then echo "🔓 Разовое подключение без сохранения конфигурации" read -rp "🌐 IP NAS-сервера: " NAS_IP read -rp "📂 Имя расшаренной папки: " SHARE_NAME read -rp "👤 Имя пользователя: " NAS_USER read -rsp "🔑 Пароль: " NAS_PASS echo "" fi # === ░░ БЛОК: ПОДКЛЮЧЕНИЕ NAS ░░ === MOUNT_POINT="/mnt/backup_nas" echo "📁 Проверка каталога: $MOUNT_POINT" sudo mkdir -p "$MOUNT_POINT" echo "🌐 Проверка ресурса //$NAS_IP/$SHARE_NAME..." if ! ping -c 1 -W 1 "$NAS_IP" &>/dev/null; then echo "❌ Хост $NAS_IP недоступен по сети." continue fi if mountpoint -q "$MOUNT_POINT"; then 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 "ℹ️ Повторное монтирование не требуется." continue 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 "❎ Пустой путь. Отмена." && continue MOUNT_POINT="$alt_mount" sudo mkdir -p "$MOUNT_POINT" ;; *) echo "⏭️ Пропуск монтирования." continue ;; 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),iocharset=utf8; then echo "✅ Успешно примонтировано в $MOUNT_POINT" else echo "❌ Ошибка монтирования." fi # === ░░ КОНЕЦ БЛОКА: ПОДКЛЮЧЕНИЕ 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 ;; *) echo "❗ Неверный выбор." ;; esac done # === ░░ КОНЕЦ БЛОКА: МЕНЮ ПОЛЬЗОВАТЕЛЯ ░░ ===
projects/linux/manual_backup_scripts/mount_nas.1744011292.txt.gz · Последнее изменение: 2025/04/07 10:34 —