type
status
date
slug
summary
tags
category
icon
password
URL
之前在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
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
- 作者:Wilson Zeng
- 链接:https://wilsonzeng.com/article/bfb1519c-6c5d-4dea-8f83-f3c2dd3b76fe
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。