【问题标题】:Batch script to ping other PC in my lan and shutdown together last online PC批处理脚本来ping我的局域网中的其他PC并一起关闭最后一台在线PC
【发布时间】:2015-02-03 16:38:56
【问题描述】:

我有一个带有 4 台 PC 和一个 Synology 服务器的 LAN。 我希望每次关闭计算机时,它会运行批处理(从 windows pc)并查看其他 PC 是否打开,如果有,则不执行任何操作,否则运行关闭服务器的命令。

这是我目前拥有的:

@echo 关闭 平 192.168.1.10 IF %ERRORLEVEL% EQU 1 plink root@192.168.1.10 -pw MYPASSWORD poweroff

但我想做类似的事情: http://i.imgur.com/BLAVCBt.png

谢谢!!

【问题讨论】:

    标签: batch-file lan shutdown synology


    【解决方案1】:

    无需从客户端执行。

    我会在服务器端进行:检查是否至少有一个客户端启动,如果没有则关闭(基本上是单线):

    (ping -4 Client1 & ping -4 Client2 & ping -4 Client3 & ping -4 Client4) |find "TTL=" >nul || shutdown -s -t 60 -f -c "Shutdown because all clients are down"
    

    在运行此脚本的服务器上创建一个计划任务 - 假设全部为 5 分钟。超时让您有足够的时间来中止关闭 (shutdown -a),以防您在服务器上工作。

    【讨论】:

      【解决方案2】:


      首先,您应该安排一个关闭批处理..按照以下步骤在您关闭时运行批处理..
      https://technet.microsoft.com/en-us/magazine/dd630947.aspx
      该批次看起来不错..但是如果您想在第一种情况下什么都不做而在第二种情况下关闭,请像这样使用它:

      @echo off 
      PING 192.168.1.10
      IF %ERRORLEVEL% EQU 1 plink root@192.168.1.10 -pw MYPASSWORD shutdown -s -t 00
      

      所以“do nothing”语句被删除,poweroff命令为shutdown -s -t 00

      【讨论】:

      • 谢谢你的回答,但是如何查看局域网中的其他电脑是否开启?
      • 我的荣幸.. 检查这个 url 以显示如何检查他们是否在线 stackoverflow.com/questions/3050898/…
      • 好的,现在如何用其他电脑执行“if”“then” else?我在描述中添加了一些其他行,以更好地理解我想做什么;)谢谢你的时间!!
      • 这是检查 ping 是成功还是失败的不好方法。最好ping host | find "TTL=" >NUL && success || fail。请参阅this answer 以获得更全面的解释,并查看this answer 以获得不太复杂的演示。
      【解决方案3】:
      for %%a in (pc-1 pc-2 pc-3 pc-4) do if /i "%computername%" neq "%%a" ping %%a&if not errorlevel 1 goto :eof
      echo shut-down-the-server-code
      

      这样,您 ping 直到您找到一台开启的 PC,跳过您自己的(显然是开启的)。如果找到任何内容,只需通过跳转到文件结尾来终止批处理。如果一切都关闭了(显然是你的除外)然后关闭服务器并关闭你的电脑。

      【讨论】:

      • ping host 可以在Reply from (local IP): destination host unreachable. 上设置errorlevel=0
      • @rojo - 仅使用 OP 的方法。如果需要,可以使用更高级的方法...
      【解决方案4】:

      http://ss64*org/viewtopic.php?pid=8188

      http://stackoverflow*com/questions/28304099/batch-script-to-ping-other-pc-in-my-lan-and-shutdown-together-last-online-pc

      http://wwwmsfnorg/board/topic/173438-shutdown-last-running-pc-on-the-lan-with-server/

      http://forum_synology*com/enu/viewtopic.php?f=145&t=96609

      http://www_dostips*com/forum/viewtopic.php?f=3&t=6245

      我认为最后一个会更容易使用谢谢你的回答!

      @echo off
      set "flag="
      ping 192.168.1.1 -n 2  |find /i "TTL=" >nul && set flag=1
      ping 192.168.1.2 -n 2  |find /i "TTL=" >nul && set flag=1
      ping 192.168.1.3 -n 2  |find /i "TTL=" >nul && set flag=1
      ping 192.168.1.4 -n 2  |find /i "TTL=" >nul && set flag=1
      if not defined flag echo shutdown server
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多