mercan
Goto Top

Scriptgesteuerte shutdown Reihenfolge von Windows 2k3 Server

Hallo,

ich hab ein Problem und ich hoffe, dass Ihr mir weiterhelfen könnt, denn ich habe momentan nicht die geringste Ahnung, wie ich das Problem angehen kann.

Wir haben in unserem Rechenzentrum mehrere Windows 2k3 Server laufen und ich habe die Aufgabe bekommen, einen Script zu schreiben, die vielen Server die wir hier am laufen haben, in einer bestimmten Reihenfolge herunter zu fahren und ebenfalls auch wieder in einer bestimmten Reihenfolge wieder zu starten.

Ich hoffe, dass ihr schon Erfahrung oder eine Idee habt, in der ich weiter suchen kann.

Vielen Dank im voraus für eure Hilfe.

Content-Key: 129478

Url: https://administrator.de/contentid/129478

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: exellent
exellent 16.11.2009 um 15:31:29 Uhr
Goto Top
schau dir mal im cmd den befehl shutdown an (shutdown /?)

zB. startet der Befehl shutdown -r -t0 den Server sofort neu

..um das zeitgesteuert anzustellen, kannst du diesen Befehl mit den "geplanten Tasks" in der Systemsteuerung starten.
Mitglied: jhinrichs
jhinrichs 16.11.2009 um 15:42:48 Uhr
Goto Top
Hallo,
wie exellent schon schrieb: Herunterfahren mit shutdown.exe (in ein Script einbauen, muss unter Admin-Account ausgeführt werden). Schwieriger wird es schon, wenn auf das Beenden bestimmter Dienste gewartet werden muss, bevor der nächste Rechner herunterfährt etc., aber das läßt sich alles über ein Script machen.
Beim Starten sieht das etwas anders aus, da stellt sich zunächst die Frage, wie werden die Rechner technisch gestartet? Per Wake on Lan, über geschaltete Spannungsversorgungen (USV/Steckdose)?
Je nachdem gibt es da entweder z.B. wake.exe (WoL), die Tools des USV-Herstellers oder des Herstellers der IP-Steckdosenbox.
Mitglied: laster
laster 16.11.2009 um 16:02:35 Uhr
Goto Top
Hallo,
hier mal ein Script für das Herunterfahren in einer definierten zeitlichen Reihenfolge.
Dazu wird das Programm psshutdown.exe (aus den PStools) verwendet.

@echo off
:: Script zum Herunterfahren der Server

set LOG=c:\shutdown-server.log
set PSI=c:\Programme\PSTools\
set DIF=20
set /A SEK=10

for %%i IN (sv04 sv03 sv02 sv01) do call :TESTA %%i
goto ENDE

:TESTA
set COMP=%1
set /A SEK=%SEK%+%DIF%
echo SHUTDOWN %COMP% in %SEK% Sekunden >> %LOG%
start "" "%PSI%\psshutdown -s -f -t %SEK% -e P:0:0 \\%COMP%"  
goto :EOF

:ENDE

set LOG=
set PSI=
set DIF=
set SEK=

Das Starten der Rechner kann dann, wie schon von jhinrichs beschrieben durchgeführt werden.

vG Lars
Mitglied: 60730
60730 16.11.2009 um 16:27:47 Uhr
Goto Top
Servus,
Zitat von @exellent:
schau dir mal im cmd den befehl shutdown an (shutdown /?)

zB. startet der Befehl shutdown -r -t0 den Server sofort neu

"richtiger" Ansatz face-wink
..um das zeitgesteuert anzustellen, kannst du diesen Befehl mit den "geplanten Tasks" in der Systemsteuerung starten.

- das würde ich eher nicht so (auf jedem Server) realisieren - sondern mit einem zentralen Script dass nacheinander der Server rebootet - dann wartet - ob ein gewisser Dienst auf den Servern läuft und dann die anderen startet - bzw. bei denen - die später hochkommen sollen - einen längeren "T" dransetzen - oder per ping -n 10 127.0.0.1 zwischen den Reboots warten und immer die gleiche "t" beim shutdownbefehl einsetzen.

Wichtig bei der ganzen Nummer ist - das checken, ob die Server wirklich wieder online sind und benachrichtigung / per Bmail / SMS / Nagios.
Dazu dann jeweils ein
if exist \\server\freigabe
anstatt
ping server
wenn es ein Fileserver ist.


Gruß
Mitglied: mercan
mercan 17.11.2009 um 10:30:22 Uhr
Goto Top
Hallo,
vielen dank für die schnelle und umfangreiche Hilfe.
Jetzt weiß ich, wo und wie ich mein Problem lösen kann.
Werde versuchen eure Tipps umzusetzen.
Wenn ich hängen sollte, werd ich mich wiede melden.
Vielen Dank euch allen.
Mitglied: mercan
mercan 17.11.2009 um 14:17:32 Uhr
Goto Top
Hallo,

eine Frage hätte ich noch.
Ist es eigentlich möglich, den nächsten Server herunter zu fahren, wenn der Server davor heruntergefahren ist?
Also nicht mit der Option -t sondern mit einer Abfrage, erst den nächsten Server herunter zu fahren, wenn der Server davor nicht mehr am Netz ist.

Wäre super, wenn ihr mir weiter helfen könnt.

Danke.
Mitglied: jhinrichs
jhinrichs 17.11.2009 um 14:22:18 Uhr
Goto Top
Hallo,
u. a. deswegen ja das zentrale Skript zur Steuerung. Da kann man dann - wie beim Hochfahren auch - z. B. per ping etc. testen, ob ein Rechner down/up ist.
Man kann natürlich auch in dezentralen Skripts so eine Abfrage machen, läuft dann aber in Gefahr, Deadlocks (Rechner A wartet auf Rechner B, der auf C, und der wieder auf A) etc. zu produzieren, da die ganze Sache schnell unübersichtlich wird.
Mitglied: 60730
60730 17.11.2009 um 14:24:10 Uhr
Goto Top
Servus,

als "Skizze" - die ungestetste - aber trotzdem funktionieren sollte...

shutdown -r -m \\server1
:checkserver1
ping -n 10 server1 && goto checkserver1 || shutdown -r -m \\server2


Gruß
Mitglied: jhinrichs
jhinrichs 17.11.2009 um 14:28:14 Uhr
Goto Top
<Oberlehrermodus>
Beziehungsweise
... || shutdown -s -m \\server2
wenn er ausbleiben soll.
</Oberlehrermodus>
Mitglied: 60730
60730 17.11.2009 um 14:36:48 Uhr
Goto Top
<fingerschnippstrebermodus>
aus bleiben - wer will dass denn auf einem Server?
Und wenn das "offline" was länger sein soll - dann nehm ich vom Marc das Pagedfrg und stell da einen riesen Timeout rein.
</fingerschnippstrebermodus>

Ich mach das ganze mit Servern, die in anderen Standorten stehen.
Und wenn ich dort nicht mindestens einen hab - an den ich "komme" - kann ich auch die anderen nicht per Wol wecken
Von daher ist bei "mir" -r schon fast genetisch bedingt. face-wink
So wie andere @echo off in Ihre unfertigen Skripte schreiben
Mitglied: jhinrichs
jhinrichs 17.11.2009 um 14:53:47 Uhr
Goto Top
Zitat von @60730:
> aus bleiben - wer will dass denn auf einem Server?

Mein Frau - des nachts bei meinem Server zu Hause face-wink

Zur Frage: shutdown -r ist sinnvoll bei dem "Master"-Server, der den Shutdown/Start der anderen steuert, da ja auch das Hochfahren in einer definierten Reihenfolge ablaufen soll. Wenn jetzt nach dem wohlgeordneten Einschlafen jeder so unkoordiniert (wie meine Mitarbeiter hier und wahrscheinlich auch Bibers Praktikantinnen) aus dem Schlaf erwacht.....
Mitglied: mercan
mercan 18.11.2009 um 09:00:30 Uhr
Goto Top
set PSI=c:\Windows\system32

for %%i IN (vm-winxp vm-winxp2 vm-winxp3) do call :TESTA %%i

goto ENDE

:TESTA

set COMP=%1
@echo off
cls
echo Der Server %COMP% wird jetzt heruntergefahren!!!!!
%PSI%\shutdown -s -m \\%COMP% /t 0

:TEST
ping -n 5 %COMP%
if errorlevel 1 call :TESTA
goto TEST

:ENDE

set PSI=


Hallo,
habe dasobige Script erstellt und habe nun das Problem, dass nach jedem Sprung zurück auf :TESTA immer nur die erste Eintrag (vm-winxp) übernommen wird.
Jetzt meine Frage, wie kann ich es schaffen, dass bei jedem Sprung auf :TESTA die nächsten Variablen (vm-winxp2 und beim nächsten Sprung vm-winxp3) in "set COMP=" übernommen werden?
Vielen Dank für eure Hilfe.