批量脚本在我的局域网中ping其他PC并在最后一台在线PC上关闭

时间:2015-02-03 16:38:57

标签: batch-file lan shutdown synology

我有一台有4台电脑和一台Synology服务器的局域网。 我希望每次关闭计算机时,它都会运行一个批处理(来自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 个答案:

答案 0 :(得分: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)。

答案 1 :(得分: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

声明"什么都不做"删除,poweroff命令关闭-s -t 00

答案 2 :(得分: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,跳过你自己的(很明显)。如果找到任何,只需通过跳转到文件结尾来终止批处理。如果所有都关闭(显然不是你的),那么关闭服务器并关闭你的电脑。

答案 3 :(得分:0)

http://ss64 *组织/ viewtopic.php?PID = 8188

http://stackoverflow * COM /问题/ 28304099 /批处理脚本到平其他-PC功能于我-LAN和关机在一起,最后在线PC

http://www MSFN 组织/板/主题/ 173438关机-最后运行-PC - 上的兰与 - 服务器/

http://forum_synology * COM / ENU / viewtopic.php F = 145安培;ΔT= 96609

http://www_dostips * COM /论坛/ 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