荣耀之链论坛

?找回密码
?立即注册
搜索
查看: 1209|回复: 0
打印 上一主题 下一主题

[批处理实现不带网络功能的UPS实现停电自动关机

[复制链接]

550

主题

957

帖子

4420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4420
跳转到指定楼层
楼主
发表于 2016-9-14 19:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链 ( 鄂ICP备13014567号-2 )

GMT+8, 2019-10-21 19:55bet36正规网址 , Processed in 0.014245 second(s), 20 queries .

Powered by Discuz! X3.4

? 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表