我有一台有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
谢谢!!
答案 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