批量服务器ping并重启游戏

时间:2017-07-21 00:25:29

标签: batch-file server ping restart

只是寻找对这种蚕食重启代码的修正/补充(最初是一个Minecraft服务器,虽然这不是它现在使用的)。

 @echo off
title Server Restarter
color 0A
cls
@%SystemRoot%\system32\ping.exe -n 1 xxx.xxx.x.xx
pause

:start
Call Server.bat
cls
pause

目前这项工作非常简单:调用server.bat并启动服务器。它没有我喜欢的铃声和口哨声。 ping的输出目前不起作用。

目标:

  1. Ping以查看是否可以访问特定的IP(可能还有端口)。

  2. 如果可以访问,请关闭 Server.exe的所有当前实例

  3. 继续ping 直到特定IP 可以访问。

  4. 一旦IP 可达,请致电server.bat

  5. 需要以~30秒的间隔ping。

    为什么需要它的一些背景:

    游戏服务器当前没有关闭其进程,无论它是否在线,它继续在进程窗口中运行。这就是为什么我需要它关闭任何当前实例,否则我们最终会运行相同服务器的倍数。

    服务器使用直接IP连接从本地计算机运行,因此如果本地计算机未连接到Internet,则服务器将无法访问任何人(显然)。 .bat的目的是持续运行,即使用户不在计算机上,它也会确保服务器全天候在线。

    这将是一个文件,我想让其他服务器主机可以使用它来保持自己的全天候在线。

    端口检查将确保主服务器端口可以访问且故障不在他们一边,这不是必需的,所以如果它太麻烦,不要担心。

    Inside" Server.bat":

    @echo off
    echo Server process starting
    echo Ctrl+Alt+Del to Kill
    Server.exe -batchmode -nographics
    

    非常欢迎您的所有帮助和评论。我试图尽可能地概括它以保持简单,因此可以为任何可能在任何应用程序中使用它的人改变它。

1 个答案:

答案 0 :(得分:1)

听起来像是在使用Windows机器或在Windows机器上工作。 Power Shell可能是编写脚本的选项。我在调查Test-ConnectionTest-NetConnection之后遇到了这个问题,它们有点像ping,后者让你测试端口是否打开。不确定是否存在类似批处理文件的命令,但Power Shell允许您使用大多数批处理命令。这两个命令都有大量在线示例,并且在您的用例中非常容易使用。

您可能希望运行while (true)循环,并定期执行ping /端口检查。这将满足您的持续检查要求。 Start-Sleep是一个cmdlet,可让您暂停脚本,您希望在永久循环中执行此操作。

您可以call batch files from Power Shellanother link from another good resource),这样,如果您不想在Power Shell中重写它们,您就可以重复使用现有脚本。