Forum: PC-Programmierung ShutDown im Netzwerk


von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Hallo in die Runde!
Ich habe ein Heimnetzwerk mit einem NAS auf Windows7 Basis und daran 
angeschlossen einen HTPC, PC (jeweils W7) und Raspberry. Jetzt wollte 
ich es so einrichten, das der NAS runterfährt, wenn keiner der anderen 
Rechner eingeschaltet ist. Ich hab bei Google eigentlich nur Lösungen 
für einen Rechner gefunden. Das hilft mir hier aber nicht weiter. Kann 
evtl jemand weiterhelfen?

danke
Thomas

von Daniel (Gast)


Lesenswert?

Was läuft denn auf dem Nas? Könntest  sonst deine Rechner minütlich 
anfingen und dann ggf. Herunterfahren

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Als schmückendes Beiwerk LcdHype. Sonst dient das ganze Werk nur als 
NAS. Es reicht auch aus, wenn die Abfrage alle 5min ist.

von Lukas T. (tapy)


Lesenswert?

Thomas G. schrieb:
> Als schmückendes Beiwerk LcdHype. Sonst dient das ganze Werk nur als
> NAS.

War nicht die gesuchte Antwort auf:

Daniel schrieb:
> Was läuft denn auf dem Nas?

Die Frage läuft vielmehr darauf hinaus, was für ein Betriebssystem da 
drauf ist.

Grobe Vermutung wäre irgend ein zusammengeschnittenes Linux. Okay. Dann 
geht es damit weiter, was so an Zugriffen möglich ist ...

Oder nach Netiquette:
Erkläre, was du HAST (Gerät, Version, weiteres), was du damit GENAU 
machen möchtest und WAS du BISHER ausprobiert hast.

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Thomas G. schrieb:
> Hallo in die Runde!
> Ich habe ein Heimnetzwerk mit einem NAS auf Windows7 Basis und daran

> danke
> Thomas

Board ist ein MINI-ITX. Rest halt ein Windowsheimnetzwerk.

: Bearbeitet durch User
von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Auf allen Rechner ein Ping-Dienst Richtung NAS installieren mit 
Minutentakt.
Unter Windows ein Dienst und unter Linux ein Daemon mit ein paar Zeilen 
C-Code.
Auf dem NAS wärs auch nicht viel aufwendiger.
Wenn 10 Minuten lang niemand mehr rummpingt. Runterfahren.
Kann man vielleicht mit WOL kombinieren, wenns der NAS unterstützt.

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Also dann zum mitschreiben:

1. Rechner, normaler PC W7-64
2. Rechner HTPC, Mini-ITX W7-64
3. "Rechner" Raspberry mit Openelec und KODI
4. Rechner, NAS auf W7-Basis

Meine Idee war jetzt das NAS pingt regelmässig die anderen Rechner an, 
und wenn alle(!) anderen aus sind, fährt das NAS auch runter.

Ich hab schon halbgare Lösungen für einen Rechner gefunden, aber nichts 
was hier passen würde. Die einzelnen Batchbefehle kenne ich  zwar in 
etwa, weiss aber nicht wie man daraus etwas programmiert.

Gute Nacht...

von Stefan L. (timpi)


Lesenswert?

Hallo Thomas ,

lass auf Deinem NAS einfach periodisch (Windows Task Scheduler bzw. 
schtasks) folgendes Script laufen:
1
set doShutdown=1
2
3
ping -n 1 HTPC
4
if %errorlevel% EQU 0 set doShutdown=0
5
6
ping -n 1 W7PC
7
if %errorlevel% EQU 0 set doShutdown=0
8
9
ping -n 1 Raspberry
10
if %errorlevel% EQU 0 set doShutdown=0
11
12
if %doShutdown% EQU 1 shutdown /s

Und ja, es bestehen noch Optimierungsmöglichkeiten....

timpi.

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

OK danke, heute nicht mehr

von Stefan L. (timpi)


Lesenswert?

Nachtrag: Die Hostnamen solltest Du natürlich durch die passenden bzw. 
die IPs ersetzen...

von c-hater (Gast)


Lesenswert?

Thomas G. schrieb:

> Ich habe ein Heimnetzwerk mit einem NAS auf Windows7 Basis und daran
> angeschlossen einen HTPC, PC (jeweils W7) und Raspberry. Jetzt wollte
> ich es so einrichten, das der NAS runterfährt, wenn keiner der anderen
> Rechner eingeschaltet ist.

Trivial. Jedenfalls wenn man einen Account mit lokalen Admin-Rechten auf 
dem NAS hat.

Hast du den? Oder nur irgendeine Dummdödel-Webkonsole oder so'n Scheiss?

von Georg (Gast)


Lesenswert?

c-hater schrieb:
> Trivial. Jedenfalls wenn man einen Account mit lokalen Admin-Rechten auf
> dem NAS hat.

Ich richte mir für solche Zwecke einen Benutzer (z.B. "Shutdowner") ein 
und gebe dem speziell das Recht, das System herunterzufahren, ist 
letztlich am einfachsten und auch am sichersten, mehr muss er ja nicht 
können.

Georg

von Toto mit Harry (Gast)


Lesenswert?

Wenn das Mainboard des NAS wake on LAN untersťützt kann man den 
Ruhezustand nach zb 10minuten aktivieren.. Jede Anfrage am Ethernetport 
weckt den Rechner wieder auf.. Ist vielleicht noch besser.

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Sorry für die späte Antwort,

könnte es evtl sein, dass die Rechner die auf ein WOL warten, auf den 
Ping antworten???

C:\Users\TG>ping -n 1 192.168.1.4

Ping wird ausgeführt für 192.168.1.4 mit 32 Bytes Daten:
Antwort von 192.168.1.19: Zielhost nicht erreichbar.

Ping-Statistik für 192.168.1.4:
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0
    (0% Verlust)

Ich deute das so, dass nur im Verlustfall die Variable im Beispiel von 
Stefan L. (Danke dafür) gesetzt wird.

Thomas

von Georg (Gast)


Lesenswert?

Thomas G. schrieb:
> Ich deute das so, dass nur im Verlustfall die Variable im Beispiel von
> Stefan L. (Danke dafür) gesetzt wird.

Ping mit errorlevel Auswertung ist keine gute Idee, Zitat aus 
Stackoverflow:

When you ping an non accesible address in your subnet, you get an 
"unreachable" answer, with 1 packet sent, 1 packed received, 0 packets 
lost. Errorlevel is not set.

When you ping an non accesible address out of your subnet, you get a 
"timeout" answer, with 1 packet sent, 0 packet received, 1 packet lost. 
Errorlevel is set.

And, you can ping an active machine, lost packets and get an errorlevel

And, you can ping an active/inactive machine, get TTL expired and get no 
errorlevel

Better, check for content of ping response.

ping -n 1 192.168.1.1 | find "TTL=" >nul
if errorlevel 1 (
    echo host not reachable
) else (
    echo host reachable
)
Zitat Ende

Dazu kommt, dass ping auf unzähligen Systemen implementiert ist, aber 
mit einigen deutlichen Unterschieden.

Georg

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Georg & Stefan haben mich auf die richtige Fährte gebracht. Mit ein 
wenig
probieren wenn man erst mal weiss, wo man ansetzen muss, ist das 
herausgekommen:


set doShutdown=1

ping -n 1 192.168.1.7 | find "TTL=" >null
echo %errorlevel%
if %errorlevel% NEQ 0 set doShutdown=1

ping -n 1 192.168.1.12 | find "TTL=" >null
echo %errorlevel%
if %errorlevel% NEQ 0 set doShutdown=1

ping -n 1 192.168.1.14 | find "TTL=" >null
echo %errorlevel%
if %errorlevel% NEQ 0 set doShutdown=1

echo %doShutdown%

pause

if %doShutdown% EQU 1 shutdown /s /f

die Echo-Befehle und Pause dienen nur zur Kontrolle und können natürlich 
entfallen. (besonders Pause...)

Lässt sich wohl für eine unbegrenzte Anzahl Rechner verwenden.
Also wer es Braucht!

Zu früh gefreut; die UND-Verknüpfung fehlt (grummel...)
to be continued

: Bearbeitet durch User
von c.m. (Gast)


Lesenswert?

gibts auf windows nmap?
[code[code]]
$ nmap -sn 192.168.2.0/24

Starting Nmap 7.01 ( https://nmap.org ) at 2016-08-02 20:22 CEST
Nmap scan report for speedport.ip (192.168.2.1)
Host is up (0.0012s latency).
Nmap scan report for server (192.168.2.2)
Host is up (0.00045s latency).
Nmap scan report for node01 (192.168.2.11)
Host is up (0.00030s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.40 seconds
[code]

dann einfach nach "host is up" greppen, und wenn >1 nicht 
herunterfahren.

dann vielleicht noch in den "autostart" jedes client rechners ein WOL an 
die NAS einbauen… und wohlfühlen.

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

danke für deine Bemühungen, aber das sind irgendwie böhmische Dörfer für 
mich

von Sascha W. (sascha-w)


Lesenswert?

Thomas G. schrieb:
> Zu früh gefreut; die UND-Verknüpfung  (grummel...)
> to be continued
vielleicht besser SO
1
set doShutdown=1
2
ping -n 1 192.168.1.7 | find "TTL=" >null
3
echo %errorlevel%
4
if %errorlevel% EQU 0 set doShutdown=0
5
ping -n 1 192.168.1.12 | find "TTL=" >null
6
echo %errorlevel%
7
if %errorlevel% EQU 0 set doShutdown=0
8
ping -n 1 192.168.1.14 | find "TTL=" >null
9
echo %errorlevel%
10
if %errorlevel% EQU 0 set doShutdown=0
11
echo %doShutdown%
12
pause
13
14
if %doShutdown% EQU 1 shutdown /s /f

Sascha

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

so wird es was:


set doShutdown=0
set sd1=0
set sd2=0
set sd3=0

ping -n 1 192.168.1.4 | find "TTL=" >null

if errorlevel 1 set sd1=1

echo %sd1%

ping -n 1 192.168.1.19 | find "TTL=" >null

if errorlevel 1 set sd2=1

echo %sd2%

ping -n 1 192.168.1.17 | find "TTL=" >null

if errorlevel 1 set sd3=1

echo %sd3%

if %sd1%==1 if %sd2%==1 if %sd3%==1 set doShutdown=1

echo %doShutdown%

if %doShutdown%==1 shutdown /s /f

if %doShutdown%==0 echo Noch ein rechner an!

pause

Der Trick ist, das alles was in einer Zeile steht nacheinander 
ausgeführt wird, daraus ergibt sich die UND-Funktion;
if %sd1%==1 if %sd2%==1 if %sd3%==1 set doShutdown=1
Shutdown=1 wird nur ausgeführt, wenn er "soweit kommt"

Vielleicht kann es einer gebrauchen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.