====== Подключение сетевого ресурса ======
//**Входит в набор [[projects:linux:manual_backup_scripts|rPi Seal]]**//
**Монтирование сетевого ресурса.** \\
Можно подключить единоразово без сохранения конфигурации или прописать конфигурацию чтобы в будущем не вводить вручную.\\
Файл конфигурации (представлен ниже) создается автоматически при запуске скрипта.\\
# IP-адрес NAS (в кавычках, например: "192.168.1.100")
NAS_IP=""
# Имя расшаренной папки (например: "PiBackup")
SHARE_NAME="PiBackup"
# Имя пользователя (в кавычках — обязательно, особенно если есть пробелы)
NAS_USER=""
# Пароль (в кавычках — ОБЯЗАТЕЛЬНО, если есть пробелы или спецсимволы)
NAS_PASS=""
#!/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
# === ░░ КОНЕЦ БЛОКА: МЕНЮ ПОЛЬЗОВАТЕЛЯ ░░ ===
===== ******* =====
[[https://boosty.to/takraztak/donate|Поддержать через Boosty]]