群晖+ups通过ping路由的方式实现停电自动关机(转)

原文地址 https://www.u-share.cn/forum.php?mod=viewthread&tid=26325

想加个ups给黑群晖,翻遍百度查到apc bk650 ch可以支持白裙,但黑裙没提到过,但太贵了。。。对于我这类穷屌,想想其它方法吧,发帖以求之
http://www.u-share.cn/forum.php?mod=viewthread&tid=26319
非常感谢Jianran的提醒,参考gb那个帖子解决了,不过改进了下,因为winscp不能root入dsm 6.02载入sh脚本,所以尝试直接计划运行脚本,建立计划脚本后,结果拔掉网线测试,真的能自动关机了,给大家分享下,估计很多人需要,ups也不用买太贵了,随便搞个,以我那黑裙那点功耗,几百块的东东还是用不上的

具体接线:ups专给黑群晖,路由只接市电
脚本如下:

#!/bin/sh

MonitorIP=192.168.1.1
DelayTime=240s

if ping $MonitorIP -W 2 -w 2 -c 2 | grep '^[0-9].*ms$' > /dev/null
then
  echo "Power on."
else
  synologset1 sys warn 0x11600036
  sleep $DelayTime
  if ping $MonitorIP -W 2 -w 2 -c 2 | grep '[0-9].*ms$' > /dev/null
  then
    synologset1 sys warn 0x11600035
  else
    synologset1 sys warn 0x11600037
    poweroff
  fi
fi


exit 0

控制面板--任务计划---新增----计划的任务--用户定义的脚本

计划一项说说,每天运行,0:00开始,我设5分钟一次,结束23:55

任务设置--自定义脚本那里复制代码进去,192.168.1.1是路由地址,不一样自己改正,240s是延时240秒,我是五分钟,如果一分钟,改59s之类,如此类推。。。

填完--确定
回到-计划的任务-点下刚健那个任务,再点运行一下,以后就是24小时运行了

至此完毕,不过应该有个缺点就是硬盘不能休眠,因为硬盘休眠那里最短设10分钟,五分钟一次,那系统估计停不下来,至于那些用APC BK650-CH的人,在休眠下能否及时响应就不清楚了,哪个方法好用见仁见智,这种脚本方法毕竟省掉不少钱了,不说了,我要找便宜ups去了
ps:希望有高手能够有更好的方法,既不影响休眠,又能在后台运行的方法,比如写入其他区,让系统自运行?可惜水平有限....

附:另一个版本的脚本

#!/bin/sh

MonitorIP=172.31.254.81
DelayTime=50s

if ping $MonitorIP -W 2 -w 2 -c 2 | grep 'icmp_seq=2 ttl=64 time' > /dev/null
then
	echo "$(date -d today +"%Y%m%d %H:%M:%S")-Power check ok." | tee -a /volume3/logs/ups_shutdown
else
	#synologset1 sys warn 0x11600036
	echo "$(date -d today +"%Y%m%d %H:%M:%S")-need checkpower again" | tee -a /volume3/logs/ups_shutdown
	sleep $DelayTime

	if ping $MonitorIP -W 2 -w 2 -c 2 | grep 'icmp_seq=2 ttl=64 time'> /dev/null
	then
		# synologset1 sys warn 0x11600035
		echo "$(date -d today +"%Y%m%d%H:%M:%S")-Recheck ok" | tee -a /volume3/logs/ups_shutdown
	else
		# synologset1 sys warn0x11600037
		echo "$(date -d today +"%Y%m%d %H:%M:%S")-Check again,Power lost, Ready to power off.." |tee -a /volume3/logs/ups_shutdown
		poweroff
	fi
fi

exit 0
posted @ 2022-10-29 09:32  汉学  阅读(2275)  评论(0)    收藏  举报