# 一、简介: 设备信息:研域M61(处理器:3855U) DSM版本:7.1 产品型号:DS918+ # 二、解决关机问题 使用任务计划,利用sh脚本不间断ping其他网络设备来判断市电是否断开。 控制面板 - 服务 - 任务计划 - 新增 - 计划的任务 - 用户定义的脚本 任务名称(自定义)- 用户账号(root)- 计划(日期:每天、时间:00:00~23:55每隔五分钟)- 任务设置(用户定义脚本输入以下代码) 代码如下: ```bash MonitorIP=192.168.1.1 DelayTime=180s if ping $MonitorIP -c 4 | grep '100% packet loss' > /dev/null then echo "Power off." synologset1 sys warn 0x11600036 sleep $DelayTime if ping $MonitorIP -c 4| grep '100% packet loss' > /dev/null then ehco "Shut down." synologset1 sys warn 0x11600037 poweroff else ehco "Power recovery." synologset1 sys warn 0x11600035 fi else echo "Power on." fi ``` 然后确定保存即可 注意:请将顶部IP地址更改为自己想要ping的IP(不推荐主要网络设备,如路由器、电脑等) # 三、解决开机问题 - 在解决这个问题之前,请先将您的群晖设置内和bios网络唤醒功能打开 - 如果您有使用openwrt或者老毛子等固件的路由器并且设备没有插在UPS可根据网上教程添加一个开机后WOL网络唤醒计划任务即可。 ## 如果您和我一样设备插在了UPS或者设备不支持计划任务shell脚本请看下面: - 我目前使用的是树莓派唤醒,因为树莓派是插电就开机的设备(后期会换成esp8266等) - 请先保证树莓派和NAS是在同一局域网内 #### 用ssh连接树莓派,安装wakeonlan `sudo apt install wakeonlan` #### 打开/usr/local/bin文件夹 `cd /usr/local/bin` #### 创建sh文件,并写入唤醒内容 `sudo nano wol.sh` #### 输入以下内容 内容中含有bark推送功能,如果没有或不需要可自行删除 ```bash #!/bin/bash # 检测是否连接到局域网(自行更换自己的网关地址) ping -c 3 192.168.1.1 > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "已连接到局域网" # 使用WOL唤醒设备 wakeonlan 00:30:18:50:AC:9D #此处mac地址换成自己的nas地址 echo "已发送唤醒信号给 00:30:18:50:AC:9D" sleep 300 # 检测是否能够ping通设备(自行更换自己的群晖IP) ping -c 2 192.168.1.2 > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "设备 192.168.1.2 可以被ping通" echo "正在通过curl访问URL通知设备已被唤醒,请注意运行状况..." curl -X GET http://这边是你的bark推送链接/NAS设备已被唤醒,请注意运行状况 else echo "设备 192.168.1.2 无法被ping通,等待 300 秒后再次尝试" sleep 300 ping -c 2 192.168.1.2 > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "设备 192.168.1.2 可以被ping通" echo "正在通过curl访问URL通知设备已被唤醒,请注意运行状况..." curl -X GET http://这边是你的bark推送链接/NAS设备已被唤醒,请注意运行状况 else echo "设备 192.168.1.2 无法被ping通" echo "正在尝试通过curl访问URL通知未被唤醒,请手动开机..." curl -X GET http://这边是你的bark推送链接/NAS未被唤醒,请手动开机 fi fi else echo "未连接到局域网" fi echo "脚本执行完成,退出..." exit 0 ``` 完成以上步骤后 CTRL+O 回车保存 CTRL+X退出 #### 赋予可执行权限赋予可执行权限 `sudo chmod +X wol.sh` ### 添加sh的开机启动添加sh的开机启动 #### 编辑cron表编辑cron表 `sudo crontab -e` #### 在最后一行添加在最后一行添加 `@reboot sleep 20 && /usr/local/bin/wol.sh` #### 完成以上步骤后 CTRL+O 回车保存 CTRL+X退出 在此所有步骤已全部完成,请先自行测试再正式启用。 Last modification:July 18, 2023 © Allow specification reprint Like 0 If you think my article is useful to you, please feel free to appreciate