能写一个脚本,在开机时自动挂载网络硬盘吗?

wen 实用脚本 47

本文目录导读:

能写一个脚本,在开机时自动挂载网络硬盘吗?

  1. SMB/CIFS 协议(Windows共享)脚本
  2. NFS 协议脚本
  3. 通过fstab自动挂载(推荐方法)
  4. 设置开机自启动
  5. 安全考虑
  6. 使用步骤
  7. 故障排除

我来帮你写一个在开机时自动挂载网络硬盘的脚本,这里提供几种常见网络存储协议的脚本方案。

SMB/CIFS 协议(Windows共享)脚本

#!/bin/bash
# 自动挂载SMB网络硬盘脚本
# 保存为:/usr/local/bin/mount_network.sh
# 配置信息
MOUNT_POINT="/mnt/network_drive"
NETWORK_SHARE="//192.168.1.100/shared_folder"
USERNAME="your_username"
PASSWORD="your_password"
DOMAIN="WORKGROUP"  # Windows域,可选
# 检查是否已挂载
if mountpoint -q "$MOUNT_POINT"; then
    echo "网络硬盘已挂载"
    exit 0
fi
# 创建挂载点(如果不存在)
if [ ! -d "$MOUNT_POINT" ]; then
    mkdir -p "$MOUNT_POINT"
fi
# 尝试挂载
mount -t cifs "$NETWORK_SHARE" "$MOUNT_POINT" \
    -o username=$USERNAME,password=$PASSWORD,domain=$DOMAIN,\
    uid=1000,gid=1000,iocharset=utf8,file_mode=0755,dir_mode=0755
# 检查挂载结果
if [ $? -eq 0 ]; then
    echo "成功挂载网络硬盘到 $MOUNT_POINT"
else
    echo "挂载失败,请检查网络连接和配置"
    exit 1
fi

NFS 协议脚本

#!/bin/bash
# 自动挂载NFS网络硬盘脚本
# 保存为:/usr/local/bin/mount_nfs.sh
# 配置信息
MOUNT_POINT="/mnt/nfs_share"
NFS_SERVER="192.168.1.100:/exported/path"
NFS_OPTIONS="rw,hard,intr,rsize=8192,wsize=8192,timeo=14"
# 检查是否已挂载
if mountpoint -q "$MOUNT_POINT"; then
    echo "NFS共享已挂载"
    exit 0
fi
# 创建挂载点(如果不存在)
if [ ! -d "$MOUNT_POINT" ]; then
    mkdir -p "$MOUNT_POINT"
fi
# 尝试挂载
mount -t nfs -o "$NFS_OPTIONS" "$NFS_SERVER" "$MOUNT_POINT"
if [ $? -eq 0 ]; then
    echo "成功挂载NFS共享到 $MOUNT_POINT"
else
    echo "NFS挂载失败,请检查NFS服务是否运行"
    exit 1
fi

通过fstab自动挂载(推荐方法)

编辑 /etc/fstab 文件,添加以下内容:

SMB/CIFS 示例

# 格式://服务器/共享路径  /挂载点  cifs  挂载选项  0  0
//192.168.1.100/shared /mnt/network_drive cifs username=your_username,password=your_password,uid=1000,gid=1000,iocharset=utf8,file_mode=0755,dir_mode=0755 0 0

NFS 示例

# 格式:服务器:导出路径  /挂载点  nfs  挂载选项  0  0
192.168.1.100:/exported/path /mnt/nfs_share nfs rw,hard,intr,rsize=8192,wsize=8192,timeo=14 0 0

设置开机自启动

方法1:使用systemd服务

创建服务文件 /etc/systemd/system/mount-network.service

[Unit]
Description=Mount Network Drive
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mount_network.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl enable mount-network.service
sudo systemctl start mount-network.service

方法2:使用rc.local(传统方法)

编辑 /etc/rc.local 文件:

#!/bin/bash
# 开机自动挂载网络硬盘
# 等待网络就绪
sleep 10
# 执行挂载脚本
/usr/local/bin/mount_network.sh
exit 0

安全考虑

使用密钥文件替代密码(更安全)

创建凭据文件 /etc/samba/credentials

username=your_username
password=your_password
domain=WORKGROUP

设置权限:

sudo chmod 600 /etc/samba/credentials

在fstab中使用:

//192.168.1.100/shared /mnt/network_drive cifs credentials=/etc/samba/credentials,uid=1000,gid=1000,iocharset=utf8 0 0

使用步骤

  1. 选择适合的脚本(根据你的网络存储类型)
  2. 修改配置信息(IP地址、用户名、密码等)
  3. 安装必要软件包
    # 对于SMB
    sudo apt-get install cifs-utils
    # 对于NFS
    sudo apt-get install nfs-common
  4. 设置脚本执行权限chmod +x /usr/local/bin/mount_network.sh
  5. 配置开机自启动
  6. 测试运行

故障排除

  • 检查网络连接:ping 192.168.1.100
  • 查看系统日志:journalctl -xe
  • 手动测试挂载:sudo mount -a
  • 检查防火墙设置

请根据你的具体网络存储类型和配置修改相应的参数,如果遇到问题,请提供具体的错误信息以便进一步诊断。

抱歉,评论功能暂时关闭!