进程守护者版本:
启动命令:nohup ./smb_guard.sh > /tmp/smb_guard.log 2>&1 &
停止守护命令:pkill -f smb_guard.sh
smb_guard.sh(守护进程版)
#!/bin/bash
# =========================================
# 宝塔 SMB 守护进程脚本
# 功能:
# 1. 挂载 SMB 共享
# 2. 自动检测挂载状态,如果断开则重连
# 3. 输出日志
# =========================================
# ===== 配置区 =====
SMB_IP="IP地址"
SMB_USER="用户名"
SMB_PASS="密码"
SMB_SHARE="smb" # 共享文件夹目录名称
LOCAL_MOUNT="/mnt/smb" # 挂载到centos目录下的名称
SMB_VERSION="3.0" # SMB 协议版本,可改为2.0或1.0
CHECK_INTERVAL=30 # 每隔多少秒检测挂载状态
LOG_FILE="/tmp/smb_guard.log"
# ==================
# 安装cifs-utils(可选)
if ! command -v mount.cifs &> /dev/null
then
echo "$(date) 未安装 cifs-utils,开始安装..." | tee -a $LOG_FILE
if command -v yum &> /dev/null; then
yum install -y cifs-utils | tee -a $LOG_FILE
elif command -v apt &> /dev/null; then
apt update && apt install -y cifs-utils | tee -a $LOG_FILE
else
echo "$(date) 无法自动安装 cifs-utils,请手动安装" | tee -a $LOG_FILE
exit 1
fi
fi
# 创建挂载目录
mkdir -p $LOCAL_MOUNT
# 守护循环
while true; do
if mountpoint -q $LOCAL_MOUNT; then
echo "$(date) SMB 挂载正常: $LOCAL_MOUNT" | tee -a $LOG_FILE
else
echo "$(date) 挂载丢失,重新挂载..." | tee -a $LOG_FILE
mount -t cifs //$SMB_IP/$SMB_SHARE $LOCAL_MOUNT -o username=$SMB_USER,password=$SMB_PASS,vers=$SMB_VERSION,cache=none
if mountpoint -q $LOCAL_MOUNT; then
echo "$(date) ✅ 挂载成功" | tee -a $LOG_FILE
else
echo "$(date) ❌ 挂载失败,请检查网络/用户名/密码" | tee -a $LOG_FILE
fi
fi
sleep $CHECK_INTERVAL
done
终端命令版本
赋予执行权限chmod +x mount_smb.sh
./mount_smb.sh
#!/bin/bash # ========================================= # 宝塔 SMB 自动挂载脚本 # 功能: # 1. 挂载 SMB 共享到本地 # 2. 自动检测已有挂载并卸载 # 3. 禁用缓存,保证文件实时刷新 # 4. 列出挂载目录文件 # ========================================= # ===== 配置区 ===== SMB_IP="IP地址" SMB_USER="用户名" SMB_PASS="密码" SMB_SHARE="share" # 文件夹名字 LOCAL_MOUNT="/mnt/smb" # centos挂载显示的目录名字 SMB_VERSION="3.0" # SMB 协议版本,可改为2.0或1.0 # ================== # 安装cifs-utils(可选,如果未安装) if ! command -v mount.cifs &> /dev/null then echo "未安装 cifs-utils,开始安装..." if command -v yum &> /dev/null; then yum install -y cifs-utils elif command -v apt &> /dev/null; then apt update && apt install -y cifs-utils else echo "无法自动安装 cifs-utils,请手动安装" exit 1 fi fi # 创建挂载目录 mkdir -p $LOCAL_MOUNT # 如果已经挂载,先卸载 if mountpoint -q $LOCAL_MOUNT; then echo "检测到已挂载,正在卸载..." umount $LOCAL_MOUNT sleep 1 fi # 挂载 SMB 共享 echo "挂载 SMB 共享..." mount -t cifs //$SMB_IP/$SMB_SHARE $LOCAL_MOUNT -o username=$SMB_USER,password=$SMB_PASS,vers=$SMB_VERSION,cache=none # 检查挂载是否成功 if mountpoint -q $LOCAL_MOUNT; then echo "✅ 挂载成功!挂载目录:$LOCAL_MOUNT" echo "文件列表如下:" ls -l $LOCAL_MOUNT else echo "❌ 挂载失败,请检查用户名/密码/共享名/网络" exit 1 fi # ===== 可选:循环刷新文件列表 ===== # echo "开始循环刷新文件列表,每10秒刷新一次(Ctrl+C停止)" # while true; do # echo "===== 文件列表 $(date) =====" # ls -l $LOCAL_MOUNT # sleep 10 # done
下面是卸载命令:
文件名字 unmount_smb.sh
./unmount_smb.sh
#!/bin/bash
# =========================================
# 宝塔 SMB 卸载脚本
# 功能:
# 1. 检测挂载
# 2. 安全卸载 SMB 挂载目录
# =========================================
# 挂载目录
LOCAL_MOUNT="/mnt/smb"
# 检查是否挂载
if mountpoint -q $LOCAL_MOUNT; then
echo "检测到挂载,正在卸载..."
umount $LOCAL_MOUNT
if [ $? -eq 0 ]; then
echo "✅ 卸载成功!"
else
echo "❌ 卸载失败,请检查目录是否被占用"
fi
else
echo "⚠️ 目录未挂载,无需卸载"
fi