Batch Bei bedarf MagicPacket (Wake-up-on-LAN) abschicken

Marthek

Cadet 3rd Year
Dabei seit
Dez. 2009
Beiträge
37
Hey,

ich habe ein BatchScript erstellt, welches ohne Probleme funktioniert, allerdings macht mir Windows einen Strich durch die Rechnung:

Code:
@echo off
ping /n 1 10.0.0.2 //Server anpingen
if errorlevel 1 goto offline //Sollte er nicht antworten springe zu :offline
goto online

:offline
  wol.exe aa0004****** //MagicPaket los schicken
  echo Zugriff auf den Server erfolgt... 
  timeout /T 50 //50 Sekunden warten, damit der server hochfahren kann
  start explorer \\server //Zugriff

:online  
  echo Server online, Verbindungsaufbau...
  start explorer \\server //Zugriff
sollte der Server nicht antworten kommt vom Localhost die Antwort, dass der Server nicht antwortet. Dies hat zur Folge, dass "errorlevel" nicht auf true gesetzt wird, es gab ja schließlich eine Antwort.

Ich vermute, man könnte das Problem umgehen, in dem man nur 0.5 Sekunden auf eine Antwort wartet, sollte in diesem Zeitraum keine Antwort kommen wird der Server als offline markiert.
Das ist aber wohl nicht die schönste Lösung.

Bin für Jeden Vorschlag dankbar,
Mit freundlichen Grüßen
Dennis
 

Prollpower

Captain
Dabei seit
Juli 2008
Beiträge
3.575
Mh sry das ich frage aber was genau möchtest Du nun bezwecken oder was für ein Problem hast Du?
 

Marthek

Cadet 3rd Year
Ersteller dieses Themas
Dabei seit
Dez. 2009
Beiträge
37
der server soll nicht 24/7 laufen und nur gestartet werden, wenn man ihn auch benötigt.
Ein Script auf dem Server sorgt dafür, dass er sich selbst herunterfährt, wenn kein Computer im Netzwerk eingeschaltet ist.

Das Problem ist, dass das "ErrorLevel" nicht auf eins gesetzt wird, weil der Ping-Befehl immer eine Antwort bekommt. Entweder vom Server (Wenn dieser eingeschaltet ist) oder vom LocalHost (wenn der Server nicht antworten sollte)
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.783
Hi,

er möchte den Server anpingen. Wenn dieser nicht reagiert soll ein Magic-Paket geschickt werden, damit der Server aus dem Standby per WoL hochfährt. Aber die Bedingung "Server antwortet nicht" gibt es nicht, weil im Zweifelsfall der Localhost antwortet - der Server ist aus aber die Methode übergeht dieses Status dadurch, dass eine Antwort (wenn auch vom Localhost) kam.

Soweit richtig TE?

Eines verstehe ich nicht: Wenn du den Server brauchst dann schicke ihm doch so oder so einfach das Magic Paket, um ihn per WoL zu wecken. Tut doch nicht weh ;)

VG,
Mad
 

HDScratcher

Lieutenant
Dabei seit
Aug. 2011
Beiträge
1.002
Kenne ich von einer anderen Problemstellung, Problem war das gleiche.
Ich habe dann nicht den Errorlevel vom Ping betrachtet, sondern von find, mit welchem ich mir die Textausgabe von Ping betrachtet habe.
Nur bei einer "echten" Antwort taucht z.B. ein TTL auf.

Also statt
Code:
ping /n 1 10.0.0.2
mach ein
Code:
ping /n 1 10.0.0.2 | find "TTL"
 

Touchthesky

Vice Admiral
Dabei seit
Juli 2011
Beiträge
6.820
wol.exe aa0004****** //MagicPaket los schicken
echo Zugriff auf den Server erfolgt...
timeout /T 50 //50 Sekunden warten, damit der server hochfahren kann
start explorer \\server //Zugriff
benutz das doch für Online und Offline , also für beides, oder würde es Problem auftauschen ?
 

Prollpower

Captain
Dabei seit
Juli 2008
Beiträge
3.575
Sorry, raffs immer noch nicht...
wenn ich das Skript starte und der den Server nicht findet springt er zu offline... startet den Server und öffnet den Explorer...
wenn er den Server findet dann öffnet er nur den Explorer... what's the Problem?
 

Marthek

Cadet 3rd Year
Ersteller dieses Themas
Dabei seit
Dez. 2009
Beiträge
37
Haargenau, das ist das Problem.

Und immer ein MagicPacket raus zu schicken habe ich erst auch getan. Bei dieser Methode wird allerdings immer der Ordner "Eigene Dokumente" geöffnet, wenn der Server nicht schnell genug via SMB erreichbar ist. Genau dieses Verhalten unterdrückt der "timeout" Befehl, sollte der Server offline sein.
Immer auf den Timeout zu warten ist meiner Meinung nach allerdings auch nicht das wahre.
 

Touchthesky

Vice Admiral
Dabei seit
Juli 2011
Beiträge
6.820
@Prollpower
du schlafwandelst ^^
 

Prollpower

Captain
Dabei seit
Juli 2008
Beiträge
3.575
Man dann sag doch das Dir der Timeout auf die eier geht... ;)

Versuch das mal so

@echo off
ping /n 1 10.0.0.2 //Server anpingen
if errorlevel 1 goto offline //Sollte er nicht antworten springe zu :offline
goto online

:offline
wol.exe aa0004****** //MagicPaket los schicken
:check
ping /n 1 10.0.0.2 //Server anpingen
if errorlevel 1 goto check
echo Zugriff auf den Server erfolgt...
start explorer \\server //Zugriff
goto exit

:online
echo Server online, Verbindungsaufbau...
start explorer \\server //Zugriff

:exit
 
Zuletzt bearbeitet:

h00bi

Fleet Admiral
Dabei seit
Aug. 2006
Beiträge
13.122
alternativ kannst du es mit

Code:
getmac /S servername
machen. Das geht nur wenn der Server an ist und sendet Errorlevel 1 wenn der Server aus ist. Dauert aber leider recht lange.
 

HDScratcher

Lieutenant
Dabei seit
Aug. 2011
Beiträge
1.002
@Prollpower
Das Problem mit Ping hast Du noch nicht verstanden.
Ping liefert nur einen Errorlevel von 1 wenn ein Fehler beim Aufruf (Syntaxfehler) gemacht wird.
Stimmt der Aufruf ist es egal ob die IP erreichbar ist oder nicht, der Errorlevel ist dann immer 0.

@Marthek
Schon die Variante mit find getestet?
 

Marthek

Cadet 3rd Year
Ersteller dieses Themas
Dabei seit
Dez. 2009
Beiträge
37
Ist doch verständlich, dass mir Timeouts auf die Eier gehen ;)

Mein Mitbewohner benötigt den Server gerade noch, deswegen kann ich es erst gleich unter "realen" Bedingungen Testen.
Bis jetzt Funktioniert es aber wie geplant, wenn ich meine Netzwerkverbindung an meinem Computer (lokal) deaktiviere.

Es funktioniert mit dem find TTL tipp.

Vielen Dank an alle für die schnellen Antworten!
 

Prollpower

Captain
Dabei seit
Juli 2008
Beiträge
3.575
Warum hat es bei mir dann geklappt? Geb ich den server an und der ist vorhanden geht's zu online... gibt's ihn nicht... (Server aus) geht es zum offline part über... vielleicht hilft es auch wenn man einfach die Benennung des Servers und nicht die IP-Adresse angibt...
Wenn kein Rechner diesen Namen in eine IP auflöst dann ist es ein Fehler
so hat es zumindest bei mir funktioniert....

und den timeout kannst Du übergehen, wenn Du den solange anpingst, bis dieser im Netz auftaucht (siehe script oben)
 
Zuletzt bearbeitet:

HDScratcher

Lieutenant
Dabei seit
Aug. 2011
Beiträge
1.002
Wenn der Server erst seit kurzem aus ist, kann dessen Name noch im Cache sein.
Das Problem tritt damit nur seltener auf. ;)
 
Top