|
UPS随便买一个就行了
我是这样实现的,我的光猫是没有接UPS的,只有服务器接了UPS
这样停电以后光猫就没电了
然后我用一个cmd脚本实现的停电自动关机
基本原理就是间隔多少秒ping一次光猫,如果连续丢失了几十秒的包说明确实是停电了,就执行关机
如果是用电不稳,就会出现瞬间断电的问题,光猫会重启,需要在光猫重启的过程中保证不关机,我这个脚本是我自己用的,间隔的时间正好比光猫重启的时间长一点点
你可以自己修改这个脚本
@echo off
echo 说明:这个程序是用于服务器检测路由器的IP,然后如果连续丢失3个包,就判定路由器是关机状态,就可以确定当前是停电状态,然后执行关机程序
echo 因为UPS不带网络功能,所有就写了这个批处理,注意,这个批处理不能放在启动项,需要你手动登陆服务器桌面开启
echo 有很多rem是因为测试的时候用到的测试的时候发现一个问题,就是循环的名称不能是命令,不然goto的时候会出错,我最开始就是goto shutdown结果老出错最后才发现是名称问题
pause
rem ============================================================================
set a=0
rem echo 开始赋值
rem pause
rem ============================================================================
:loop
rem echo 开始ping
rem pause
rem 说明,find命令后面的管道是没有找到才执行,而且必须是双线
ping 192.168.1.1 -n 1| find "时间" || goto add1
rem pause
rem echo ping通过,给a赋值0
set /a a=0
rem echo %a%
rem 下面这个ping是用于sleep的,因为bat里面没有sleep命令就用这个代替了,整个程序的执行过程是参数-1秒下面的参数是5,则循环过程是4秒一次
ping -n 6 127.0.0.1
rem pause
rem echo 赋值完毕
rem pause
goto loop
rem ============================================================================
:add1
rem echo ping没有通过开始+1
set /a a=a+1
echo 当前没有通过ping >>log.txt
rem date /t >>log.txt
rem time /t >>log.txt
echo %a% >>log.txt
rem echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% >>log.txt
echo %DATE:~0,13% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% >>log.txt
echo ########################## >>log.txt
rem pause
rem echo +1完毕
rem 下面是必经a是否大于等于15,即连续丢失15个包,如果是网络接口是断开的状态这个是瞬间就直接丢失15个包,配合6秒的延迟,这个刚好是2分钟,一般路由器重启2分钟应该足够启动完毕了
rem 实测光猫断电重启需要6次 这里设置8次应该够了
ping -n 6 127.0.0.1
if %a% GEQ 8 (goto guanji) else goto loop
rem pause
rem ============================================================================
:guanji
echo 执行关机程序 >>log.txt
rem date /t >>log.txt
rem time /t >>log.txt
rem echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% >>log.txt
echo %DATE:~0,13% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% >>log.txt
echo ########################## >>log.txt
shutdown -s -t 0 |
|