10
10 月
2023

群晖之屌丝关机

低端UPS没有通讯接口,网上刨到的Ping其他设备关机,比较适用。经如下改进,测试可用。测试环境: 群晖 216Play, DSM版本:6.2.3

1、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;日志文字内容自行修改。

You may also like...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注