Server per Batch-Script starten und automatisch Sicherungen durchführen. Fehler!

Rocky182

Newbie
Registriert
Sep. 2015
Beiträge
4
Hallo liebes Forum!

Kurze Schilderung der Situation:
Ich habe einen File-Server (FreeNAS) den ich mithilfe einer virtuellen Maschine (VMware) auf einem externen Rechner betreibe.
Um den Server automatisch beim Hochfahren meines Laptops zu starten habe ich auf dem Server WakeOnLan installiert und folgendes Batch-Script dazu geschrieben.
(192.168.1.254 -> IP Router; 192.168.1.3 -> IP Server)

Code:
@echo off

:start
echo.
echo Warten bis die Netzwerkverbindung steht.
for /l %%G in (1,1,3) do (
	timeout 60 /nobreak

	echo.
	echo Ueberpruefen ob der Router eingeschaltet ist.
	ping 192.168.1.254 -n 1 -w 500
	if not ERRORLEVEL 1 goto ping_Server
	
	echo Erneuter Versuch.
)

if ERRORLEVEL 1 goto fail_Router


:ping_Server
REM Fehler!
echo.
echo Der Router ist eingeschaltet.

echo.
echo Ueberpruefen ob der Server eingeschaltet ist.
for /l %%G in (1,1,3) do (
	ping 192.168.1.3 -n 1 -w 500
	if not ERRORLEVEL 1 goto success_Server

	echo.
	echo Der Server ist nicht eingeschaltet.
	echo Der Server wird versucht zu starten.
        REM Mit dieser .exe Datei starte ich den Server.
	WolCmd.exe 000ffec5058b 192.168.1.254 255.255.255.0

	echo.
	echo Dem Server wird Zeit gelassen um den Startvorgang einzuleiten.
	timeout 120 /nobreak

	echo.
	echo Erneute Ueberpruefung ob der Server eingeschaltet ist.
	REM Fehler!
)

:fail_Router
echo.
echo Der Router ist nicht eingeschaltet
goto end

:success_Server
echo.
echo Der Server ist eingeschaltet.

REM In der login.text Datei stehen die Anmeldedaten des Servers.
SET /p login=<C:\local\WolCmd\login.txt 

net use \\192.168.1.3\Public /%login%
goto end

:end
exit Exitcode
exit /B

Nun habe ich ein weiteres Batch-Script geschrieben, dass ich mithilfe der Aufgabenplanung jede Woche einemal eine Sicherung des Laptops auf den Server machen lasse.
Dieses Script sieht wie folgt aus.

Code:
@echo off

:start
start /wait wakenas.bat

if ERRORLEVEL 1 goto shutdown

echo.
echo Der Server ist online.

:backup
echo Der Ordner Documents & dessen Inhalt wird kopiert.
robocopy C:\Users\andreas\Documents W:\Sicherungen\Documents /mir

echo.
echo Der Ordner Videos & dessen Inhalt wird kopiert.
robocopy C:\Users\andreas\Videos W:\Sicherungen\Videos /mir 

echo.
echo Der Ordner Music & dessen Inhalt wird kopiert.
robocopy C:\Users\andreas\Music W:\Sicherungen\Musik /mir

echo.
echo Der Ordner Pictures & dessen Inhalt wird kopiert.
robocopy C:\Users\andreas\Pictures W:\Sicherungen\Pictures /mir

echo.
echo Der Ordner Dropbox & dessen Inhalt wird kopiert.
robocopy C:\Users\andreas\Dropbox W:\Sicherungen\Dropbox /mir

echo.
echo Fertig!

:shutdown
echo Herunterfahren
shutdown -p -f

Wenn ich nun eines der beiden Scrips ausführe kommt bei mir an den im Quellcode markierten Stellen (REM Fehler!) eine Meldung ob ich den Batch Vorgang abbrechen möchte.
Liegt das vielleicht daran, dass ich den Timeout Befehl mit "STGR+C" beende?
Und wenn Ja, wie kann ich dies umgehen?

Ein weiterer Fehler passiert mir bei dem Server login, und zwar kommt bei mir stehts, dass das Kennwort falsch ist, aber wenn ich mich "manuell" am Server einlogge kommt bei mir kein Fehler.
Hier die loggin-Datei:

Code:
user:XXXX password:XXXX

Ist vielleicht der Netuse-Befehl falsch?
Muss ich vielleicht meine Domäne auch noch angeben?

Ich komme nicht mehr weiter und wäre um jede Hilfe froh.

MfG
Neuling
Rocky182
Ergänzung ()

Okay das mit dem einloggen habe ich in den Griff bekommen.
In der Textdatei muss natürlich das "password:" weg.
 
Zuletzt bearbeitet:
Was passiert wenn du den Timeout einfach die vollen 60 sec durchlaufen lässt? Warum brichst du ihn mit CTRL-C ab?

Falls es zu lange dauert, könnte man ja einfach den Timeout heruntersetzen.

Kleine Trickerei: Man kann auch mit ping einen Delay herbeiführen:

PING -n 11 127.0.0.1>nul

Dabei wird 11 mal die Loopback-Adresse gepingt, der Abstand zwischen den Pings ist je 1 sec --> 10 sec warten bevor etwas weiter geht.

Da du ja eh vor dem Skript zu sitzen scheinst, wenn es läuft: Wie wäre es mit "PAUSE" als Alternative? Damit bekommst du die berühmte "Press any key to continue..." Meldung bevor sich der Rest in Bewegung setzt.
 
Hy nochmal,

also ich sitze nur davor wenn ich das Batch-Programm teste.
Ansonsten startet es automatisch per .vir Datei (damit es im Hintergrund läuft) mithilfe des "regidit" (im ausführen Fenster, weiß nicht auswendig wie das Programm heißt) beim Login.

Nun bin ich draufgekommen, dass es am stgr+c liegt (den timeout habe ich eingefügt weil der Computer nach dem login etwas Zeit braucht um sich mit dem Netzwerk zu verbinden).

Wenn ich die Batch manuell ausführe funktioniert sie einwandfrei.
Aber nachdem Login wird sie zwar ausgeführt aber sie startet den Server nicht? 😣

Was könnte hier das Problem sein?

Bedanke mich schon im Voraus für die Antworten.

MfG
Rocky182
 
.vir?? Das ist normalerweise eine Endung für infizierte Dateien, die von einem Virenscanner gefunden wurden. Regedit ist mir ein Begriff - aber warum so kompliziert (mal davon abgesehen sind Reg-Hacks sowas von Windows XP...)?

Lass das Skript doch über den Task Scheduler anlaufen, da kann man direkt als Trigger den Logon und eine entsprechende Verzögerung bis zur Ausführung angeben...

Zu deinem Serverproblem:
- kennt der ausführende PC wolcmd.exe, z.B. über seine Environment Variables?
- ist die Netzwerkkarte des Servers so konfiguriert, das Magic Packet annehmen zu dürfen?

(btw.: über Powershell geht WOL auch ohne wolcmd.exe http://blogs.technet.com/b/matthts/...ines-a-powershell-script-for-wake-on-lan.aspx ;) ist aber schon ein älterer Post, kann also sein, dass auch diese Methode mittlerweile eleganter funktioniert)
 
Ach sorry :rolleyes: die Dateiendung ist nicht .vir sondern .vbs.
Und ich will, dass das CMD-Fenster nicht sichtbar ist wenn es ausgeführt wird (funktioniert das mit dem Taskscheduler?).
Der PC kennt wolcmd.exe und die Netzwerkkarte ist konfiguriert.

Das einzige Problem ist, dass wenn die Batch vom Computer automatisch ausgeführt wird nicht funktioniert aber wenn ich sie manuell ausführe schon??

Kann es vielleicht irgendein Berrechtigungs-Problem sein?
 
Sorry, dass die Antwort was gedauert hat, hier kommt direkt die nächste blöde Frage:

Warum darf das CMD nicht sichtbar sein? Wenn du eh als Einziger vor dem PC sitzt wird so eine kleine cmd doch nicht stören ;)

Hast du mit "vom Computer ausgeführt" zufällig als NT-AUTHORITY\SYSTEM gemeint? Der darf nämlich nicht an Netzlaufwerke bzw. jegliche Enden mit normaler Windows-Authentifizierung - ist halt ein System-Account. Außerdem hat der Account noch mehr als Admin-Rechte, wenn den jemand unter die Finger bekommt (ins Internet darf SYSTEM nämlich!)...

Ein Workaround wäre ein Scheduled Task der mit "Run whether user is loggend on or not" läuft, der liefe nämlich auch dann, wenn z.B. die Maschine gesperrt ist. Könnte allerdings dann ein Thema werden mit dem Zugriff auf deine Userdateien - müsstest du mal überprüfen.
Ansonsten als "Run only when user is logged on" einstellen und unter "Conditions" die Option "Start the task only if the computer is idle for:" aktivieren - dann käme der Task mit deinen Credentials hoch, aber nur, wenn der PC x Minuten im Leerlauf war. Also z.B. wenn du dir gerade eh einen Kaffee holst und nicht an der Kiste sitzt...

Hier ein paar andere Ideen zu dem Thema, u.a. verskriptbar.
 
Sorry für die späte Rückmeldung.

Ich finde es einfach schöner wenn die Datei im Hintergrund läuft, aber zurück zum eigentlichen Problem:
Also ich hatte das Script per Registrierungs-Editor unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\not active" automatisch bei jedem Login ausführen lassen. Habe dies aber nun aufgegeben, weil das Programm zwar beim Loggin ausgeführt wurde, aber irgendwie konnte er den Server nicht starten.
Nun habe ich das Script umgeschrieben...

Code:
@echo off

:start
ping 192.168.1.3 -n 1 -w 500
if errorlevel 1 goto wol_Server
echo der Server ist eingeschaltet.
goto success_Server

:wol_Server
echo. 
echo Der Server wird versucht zu starten.
WolCmd.exe 000ffec5058b 192.168.1.254 255.255.255.0

:success_Server
ping 192.168.1.3 -n 1 -w 500
if errorlevel 1 goto end

echo.
echo Der Server ist eingeschaltet.
SET /p login=<C:\local\WolCmd\login.txt 

echo Einloggen.
net use \\192.168.1.3\Public /%login%
goto end

:end

und versucht, mit dem Aufgabenplaner zu starten, funktioniert aber trotzdem nicht.

Hier die Einstellungen der Aufgabe:
Aufgabenplanung1.JPG

Aufgabenplanung2.JPG

Aufgabenplanung3.JPG

Aufgabenplanung4.JPG

Aufgabenplanung5.JPG

Aufgabenplanung6.JPG

Bedanke mich im Voraus.
MfG
Rocky182
 
Zuletzt bearbeitet:
Guck mal in deinem letzten Bild, da steht der Hinweis: "Die Startbedingungen wurden nicht erfüllt. Das Netzwerk ist nicht verfügbar."

Könntest du gegentesten, indem du die Bedingung für dein Netzwerk entfernst.

Falls das nicht hilft, könntest du noch probieren die "Neustartzeit" höher zu setzen, nicht, dass sich da etwas in die Quere kommt. Oder in den Einstellungen bei "Folgende Regel anwenden, wenn die Aufgabe bereits ausgeführt wird" den Wert mal auf "Aktuelle Instanz anhalten" (so oder so ähnlich heißt das Ding) setzen und nochmal testen.

Macht es einen Unterschied, ob du "Mit höchsten Berechtigungen ausführen" aktivierst?
 
Zurück
Oben