-1

4 台の PC と 1 台の 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

クライアント側から行う必要はありません。

私はサーバー側でそれを行います:少なくとも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

そうすれば、オンになっている PC が見つかるまで ping を実行し、自分の PC (明らかにオンになっている) はスキップします。見つかった場合は、ファイルの終わりにジャンプしてバッチを終了します。すべてがオフになっている場合 (明らかに自分のもの以外)、サーバーをシャットダウンし、PC をシャットダウンします。

于 2015-02-03T17:51:26.433 に答える
0


まず、シャットダウン バッチをスケジュールする必要があります。以下の手順に従って、シャットダウン時にバッチを実行します 。
https://technet.microsoft.com/en-us/magazine/dd630947.aspx
最初のケースでは何もせず、2 番目のケースでシャットダウンしたい場合は、次のように使用します。

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

したがって、「何もしない」というステートメントは削除され、poweroff コマンドは shutdown -s -t 00 になります。

于 2015-02-03T16:49:37.107 に答える