Инструменты пользователя

Инструменты сайта


projects:linux:manual_backup_scripts:mount_nas

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
projects:linux:manual_backup_scripts:mount_nas [2025/04/07 10:34] projects:linux:manual_backup_scripts:mount_nas [2025/04/11 17:40] (текущий)
Строка 1: Строка 1:
 ====== Подключение сетевого ресурса ====== ====== Подключение сетевого ресурса ======
 +//**Входит в набор [[projects:linux:manual_backup_scripts|rPi Seal]]**//
  
 **Монтирование сетевого ресурса.** \\ **Монтирование сетевого ресурса.** \\
Строка 30: Строка 31:
  
 set -euo pipefail 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
  
 # === ░░ БЛОК: ФАЙЛ КОНФИГУРАЦИИ ░░ === # === ░░ БЛОК: ФАЙЛ КОНФИГУРАЦИИ ░░ ===
Строка 54: Строка 62:
 fi fi
 # === ░░ КОНЕЦ БЛОКА: ФАЙЛ КОНФИГУРАЦИИ ░░ === # === ░░ КОНЕЦ БЛОКА: ФАЙЛ КОНФИГУРАЦИИ ░░ ===
 +
 +# === ░░ ФУНКЦИЯ МОНТИРОВАНИЯ NAS ░░ ===
 +mount_nas() {
 +  local 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 недоступен по сети."
 +    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
 +}
 +# === ░░ КОНЕЦ ФУНКЦИИ ░░ ===
  
 # === ░░ БЛОК: МЕНЮ ПОЛЬЗОВАТЕЛЯ ░░ === # === ░░ БЛОК: МЕНЮ ПОЛЬЗОВАТЕЛЯ ░░ ===
Строка 84: Строка 152:
         continue         continue
       fi       fi
-      ;& +      mount_nas
- +
-    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 ░░ ===+
       ;;       ;;
  
Строка 168: Строка 169:
         echo "❎ Отмена удаления."         echo "❎ Отмена удаления."
       fi       fi
 +      ;;
 +
 +    4)
 +      echo "🔓 Разовое подключение без сохранения конфигурации"
 +      read -rp "🌐 IP NAS-сервера: " NAS_IP
 +      read -rp "📂 Имя расшаренной папки: " SHARE_NAME
 +      read -rp "👤 Имя пользователя: " NAS_USER
 +      read -rsp "🔑 Пароль: " NAS_PASS
 +      echo ""
 +      mount_nas
       ;;       ;;
  
Строка 177: Строка 188:
 done done
 # === ░░ КОНЕЦ БЛОКА: МЕНЮ ПОЛЬЗОВАТЕЛЯ ░░ === # === ░░ КОНЕЦ БЛОКА: МЕНЮ ПОЛЬЗОВАТЕЛЯ ░░ ===
 +
 </code> </code>
 +
 +===== ******* =====
 +[[https://boosty.to/takraztak/donate|Поддержать через Boosty]]
projects/linux/manual_backup_scripts/mount_nas.1744011292.txt.gz · Последнее изменение: 2025/04/07 10:34 —

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki