本文目录导读:

我来帮你写一个在开机时自动挂载网络硬盘的脚本,这里提供几种常见网络存储协议的脚本方案。
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
使用步骤
- 选择适合的脚本(根据你的网络存储类型)
- 修改配置信息(IP地址、用户名、密码等)
- 安装必要软件包:
# 对于SMB sudo apt-get install cifs-utils # 对于NFS sudo apt-get install nfs-common
- 设置脚本执行权限:
chmod +x /usr/local/bin/mount_network.sh - 配置开机自启动
- 测试运行
故障排除
- 检查网络连接:
ping 192.168.1.100 - 查看系统日志:
journalctl -xe - 手动测试挂载:
sudo mount -a - 检查防火墙设置
请根据你的具体网络存储类型和配置修改相应的参数,如果遇到问题,请提供具体的错误信息以便进一步诊断。