根据ping响应重启服务器

时间:2017-07-22 07:19:25

标签: loops batch-file ip ping restart

我是通过本网站上的其他问题/答案的混搭创建的,以及在ss64.com上找到的东西

我已经把它归结为我想要的东西,现在它只是一个重要的缺失细节,它会让它一遍又一遍地循环,直到建立连接,同时避免不断启动每个服务器周期。

它大量过度设计和骇人听闻,但它基本上是我所学到的所有知识的高潮,并以我能理解的方式解决它。

现在的主要问题是如果丢包率低于100%,它将启动服务器,即使80%的数据包丢失对于连接或运行的任何东西都太高了。

我正在寻找这个至关重要的命令,以确保服务器只有在100%连接时才会启动,并确保不会继续启动服务器如果继续100%连接循环(已发生太多次,运行的服务器的50个实例真的是PC杀手)。

这就是我所拥有的(不要笑得太厉害)。

@echo off 
title Server Restart
color 0A
cls
:start
Cls
set ip=xxx.xx.xxx.xx

:ping
ping %ip% -n 5 || goto PingFail
timeout /t 8
cls
echo Ping was Successful to %ip% at %date% %time%
timeout /t 10
ping %ip% -n 5 -w 5000 && goto start
echo Moving To PingFail...
goto PingFail


:Starting
Echo Connection Established... Starting server
**Start Server.bat**
Echo Start Successful
goto start


:PingFail
cls
Echo Connection Has Failed.. looping.
timeout /t 3
goto Pingloop


:Pingloop
echo PINGLOOPING
ping %ip% -n 5 || goto Pingloop
timeout /t 15
goto Starting

1 个答案:

答案 0 :(得分:1)

我们在谈论什么样的服务器?你知道大多数防火墙默认阻止ping请求吗? 您可以使用:https://uptimerobot.com/并使用其API获取有效信息。

如果你想确定你有与外界的联系,你可以检查这样的0%损失:

ping -n 1 -4 www.google.com | grep "0% loss"

我从未见过80%或60%的损失但当然你可以将0%改为任何百分比。虽然ping你自己的公共IP并不意味着你有一个可用的互联网连接。你需要ping世界'不是你的家。