Forum: PC-Programmierung ShutDown im Netzwerk


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht lesenswert
OK danke, heute nicht mehr

von Stefan L. (timpi)


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

von c-hater (Gast)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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)


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

von Sascha W. (sascha-w)


Bewertung
lesenswert
nicht 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)


Bewertung
lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.