群晖之屌丝关机
低端UPS没有通讯接口,网上刨到的Ping其他设备关机,比较适用。经如下改进,测试可用。测试环境: 群晖 216Play, DSM版本:6.2.31、Ping :改Ping设备名:
A、被测设备无需设置固定IP,适用性广;
B、可ping智能家居,如:智能插座、燃气热水器、电视机、机顶盒……
注意:少数设备,如荣耀智慧屏,Ping设备名称失败,只能Ping IP。
C、使用同一供电线路的2个设备做判断,提高可靠性。
监测关键字为Ping 命令返回语句中的 “bytes from",可根据实际修改。
不使用TTL做关键字原因:部分设备返回225,部分设备返回 64.
不使用 ms 做关键字原因:有网友发文,其ping不通时仍有ms 返回。
2、日志:
A、使用日志,不影响磁盘休眠;
B、开机时,NAS上备份的日志文件拷入群晖 /tmp/ups文件夹,并追加日志;断电关机时自动回写NAS;
C、开机时,NAS上备份的日志文件大于100KB时,将被清空内容。
手动关闭NAS,日志文件不会回写。可自行增加关机前的任务计划。
3、关机时间:设备1检测时间 (1~ x分钟) + 设备2的检测间隔 150秒 + Shutdown 关机延迟 1分钟。
设置简单:添加2个计划任务:1、开机写代码计划(代码见2楼);2、定时Ping计划。
Linux小白网上思考所得,不足之处欢迎指正,谢谢。
cd /tmp/ups # 切换目录到 /tmp/ups
tee netcheck.sh <<-'EOF'
#!/bin/env bash
#MonitorIP=192.168.1.2
Monitor1=BRN3C2AXXXXXXX
Monitor2=uplus-haier-1814-XXXXX
DelayTime=150s
if ping $Monitor1 -W 2 -w 2 -c 2 | grep ' bytes from ' > /dev/null
then
echo "$(date -d today +"%Y-%m-%d %H:%M:%S"):连接打印机正常。" | tee -a/tmp/ups/PowerLog.txt
else
echo "$(date -d today +"%Y-%m-%d %H:%M:%S"):连接打印机失败,稍候测试燃气热水器 。。。" | tee -a/tmp/ups/PowerLog.txt
sleep $DelayTime
if ping $Monitor2 -W 2 -w 2 -c 2 | grep ' bytes from ' > /dev/null
then
echo "$(date -d today +"%Y-%m-%d %H:%M:%S"):连接燃气热水器成功,退出复检。" | tee -a/tmp/ups/PowerLog.txt
else
echo "$(date -d today +"%Y-%m-%d%H:%M:%S"):连接2个设备均失败,NAS 1分钟后关机。" | tee -a/tmp/ups/PowerLog.txt
cp -f /tmp/ups/PowerLog.txt /volume1/Software/PowerLog.txt
shutdown -P +1
fi
fi
exit 0
EOF
find /volume1/Software/ -iname PowerLog.txt -size +100k -exec ture > /volume1/Software/PowerLog.txt \;
sleep 2s #日志文件超过100K时,清空内容。
cp -f /volume1/Software/PowerLog.txt /tmp/ups/PowerLog.txt
chmod 666 /tmp/ups/PowerLog.txt 代码中的 Monitor1、Monitor2 必须修改为自用设备名称或者固定IP;日志文字内容自行修改。 本帖最后由 ETan 于 2020-8-11 12:54 编辑
从张大妈过来的,思考了。能用就行。 @ETan 感谢回复。
关键字我觉得不重要,你临时开启路由器telnet,看ping指令返回的结果,根据自己的实际选才是最合理的。
说实话, 我不理解你的意思。按我个人的理解,UPS上一定是接着NAS的,买UPS主要就是为了数据,我的光猫和路由器,也同时接到了UPS上。因此,NAS Ping自己或者路由器,就等于无用功。需要Ping市电断电就Ping不通的设备,才有用。
如果路由器挂市电,那你直接Ping路由器也可以。路由器断电,后面接的设备,并不会立即改变IP,所以Ping NAS自己的IP也没有意义。
我觉得固定IP不如用设备名,万一复位路由器或者NAS,IP就变了,然后自动关机了,麻烦。设备名,基本不会变,路由器里看连接了哪些设备,就可以看到。这也是网上已经有了很多的代码,我还发这个贴的原因之一。
Ping设备名、Ping 2台不同的设备、写日志不影响磁盘休眠、控制日志大小,才是这个帖子存在的价值。
还需要改进的,就是NAS检测到设备1掉线、设备2也掉线,发不同声响警报。这个代码我还不会。
求:群晖发声、发邮件、发短信报警代码,谢谢。 本帖最后由 ETan 于 2020-8-15 18:07 编辑
1,说实话, 我不理解你的意思。
2,路由器断电,后面接的设备,并不会立即改变IP,所以Ping NAS自己的IP也没有意义。
答:1,新建脚本:nas查看网卡ip,如果{******,结束脚本}
如果{*****,三分钟后再**********,关机}
以上脚本设置开机运行计******钟运行一次
答:2,找台电脑测试,设置静态ip,拔掉网线,ipconfig/all,ip为空 感谢大佬分享,不过网上搜出来的脚本和你这有点差异,我好奇他们在判断ping不通后 执行这个代码synologset1 sys warn 0x11600035、36、37是干嘛用的?
页:
[1]