编写一个基于UnRaid的开机自动延迟挂载群晖SMB并启动Docker容器的脚本

2023-04-18 21:00:26 17点赞 114收藏 5评论

之前在UnRaid下部署了Emby后,发现由于我的媒体库是在黑群晖的虚拟机上的,而UnRaid下Web界面挂载群晖的SMB没有延迟挂载的相关选项,又或者是本人眼拙没发现,这个问题会导致UnRaid启动阵列后无法成功挂载SMB,这个时候如果启动Emby,就会出现媒体文件全部找不到兼容流的情况,需要再次手动挂载SMB,然后重启一次容器,这个是极其不方便的,所以编写了这个脚本,基本来实现这个功能,下面直接放代码内容。

新建一个sh脚本,命名随意,比如我是AutoMountSMB.sh,内容如下

#!/bin/bash

IP_ADDRESS="群晖的IP地址"

SHARE_NAME="SMB共享名称"

DELAY_TIME=60

while true; do

if ping -c1 $IP_ADDRESS &> /dev/null; then

sleep $DELAY_TIME # 延迟20秒后挂载SMB共享,用于确保部分插件成功启动后再挂载,比如CloudDrive2

mkdir /mnt/remotes/DS920_网盘 #自定义创建挂载目录

mount -t cifs //群晖IP/SMB路径 /mnt/remotes/DS920_网盘 -o rw,username=群晖用户账号,password=群晖用户密码,iocharset=utf8,uid=0,gid=0,vers=3.0

sleep 5s

docker start Emby NAS-Tools ChineseSubFinder #按需修改在挂载后自动启动的容器

break

else

sleep $DELAY_TIME

fi

done

将脚本放在/boot/config/plugins/user.scripts/scripts/下,不要放在root下,否则unRaid重启会被自动删除,存放好之后,编辑UnRaid的go文件,让脚本开机自启,nano /boot/config/go,把下面的内容添加在 & 这个符号之前,/usr/local/sbin/emhttp的下一行,不要放在/usr/local/sbin/emhttp之前,否则可能会导致无法进入WebUI,下面是示例内容

#!/bin/bash

# Start the Management Utility

export UNRAID_GUID=xxxx

export UNRAID_NAME=Tower

export UNRAID_DATE=1654646400

export UNRAID_VERSION=Pro

/usr/local/sbin/emhttp

chmod -R 777 /boot/config/plugins/user.scripts/scripts/AutoMountSMB.sh

sh /boot/config/plugins/user.scripts/scripts/AutoMountSMB.sh &

保存后,即可重启测试,开机后可以通过命令查询脚本是否成功在后台运行,返回PID则说明服务正常。

pgrep -f example.sh


编写一个基于UnRaid的开机自动延迟挂载群晖SMB并启动Docker容器的脚本


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
5评论

  • 精彩
  • 最新
  • 谢谢大佬,刚挂载了三个文件夹。还有我发现要提前在unassigned devices插件里添加需要挂载的文件夹,就是主界面-add remote smb/nfs share,我是smb添加的。不然挂载不上,挂载文件夹里是空的

    校验提示文案

    提交
  • 确实每次重启后都有这个问题

    校验提示文案

    提交
    我还碰到不能重启的问题,重启不挂载比不能重启的问题小多了

    校验提示文案

    提交
    收起所有回复
  • 老哥,我跟你一样emby的媒体库是挂载的黑群晖里的,有的时候老出现没有兼容的流,不知道你有没有这个症状想请教下。

    校验提示文案

    提交
  • 好脚本,解决问题了

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
114
扫一下,分享更方便,购买更轻松