-1

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

这是我目前所拥有的:

@echo off PING 192.168.1.10 IF %ERRORLEVEL% EQU 1 plink root@192.168.1.10 -pw MYPASSWORD poweroff

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

谢谢你!!

4

4 回答 4

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),以防您在服务器上工作。

于 2015-02-03T17:48:24.133 回答
0
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,跳过您自己的(显然是开启的)。如果找到任何内容,只需通过跳转到文件结尾来终止批处理。如果一切都关闭(显然,除了你的)然后关闭服务器并关闭你的电脑。

于 2015-02-03T17:51:26.433 回答
0


首先,您应该安排关闭批处理..按照以下步骤在关闭时运行批处理..
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

于 2015-02-03T16:49:37.107 回答
0

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://www msfn org/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
于 2015-02-04T22:50:52.423 回答