Sonntag, 05. September 2010
MaschinenStopp

Punktgenaues Ein- und Ausschalten der Firmen-PCs

Das VBSkript MaschinenStopp (genau genommen sind es vier Skripte) ermöglicht das zentrale, zeitgesteuerte Ein- und Ausschalten der Firmen-PCs mit Windows-Betriebssystemen. Es basiert auf geplanten Tasks und benötigt keinen dedizierten Server und keine Installation auf den Clients. Als Grundlage wird eine Liste aller Rechner und den dazugehörigen Mac-Adressen benötigt. In größeren Netzen lässt sich die Auflistung problemlos aus Asset-Managementsystemen oder DHCP-Servern exportieren.

Das Skript DhcpToPCListe.vbs übernimmt die Konvertierung des Microsoft-DHCP-Server-Exports in das Format der PCListe.txt, in der sich alle zu steuernden Rechner befinden müssen. Falls ein solches System nicht zur Verfügung steht, ist Handarbeit notwendig. Die Mac-Adresse eines Windows-Rechners erhält man mit dem Befehl ipconfig /all oder über das Netzwerk per Ping-Befehl mit anschließendem arp -a.

 

 

 

Während der Server-Installation mit Adminrechten - es kann sich hierbei auch um einen XP oder Vista/Windows 7-Client handeln - durch die Datei setup.vbs werden vier geplante Tasks erstellt. Da für das Herunterfahren der Rechner erweiterte Berechtigungen notwendig sind, muss im Laufe der Installation ein Benutzerkonto mit administrativen Rechten auf den Zielrechnern angegeben werden. Möchte man keine so umfassenden Rechte spendieren, genügt es, den Benutzeraccount in der lokalen Sicherheitsrichtlinie bei „Erzwingen des Herunterfahrens von einem Remotesystem aus“ einzutragen. Dann allerdings auf jedem Rechner, der vom Skript herunter gefahren werden soll. Dabei kann es sich um einen lokalen oder einen Domänenaccount handeln. Eine lokale Installation auf den zu weckenden Rechnern ist dadurch nicht notwendig.


Die Installation in 5 Schritten:

 

1. Als Administrator auf dem neuen MaschinenStopp-Server die Datei setup.vbs aufrufen.

2. Pfad angeben, in den die Software installiert werden soll.

3. Benutzerkonto angeben, das das Recht besitzt, die Clients herunter zu fahren. Dabei kann es sich um ein Administrator-Konto handeln (der Administrator besitzt das Recht zum Herunterfahren auf jeden Fall) oder Sie geben einem nicht-administrativen Konto dieses Recht (s.o.).

4. Jetzt werden 4 geplante Tasks erstellt. Sie werden bei jeder Taskerstellung in einer DOS-Box aufgefordert, das Kennwort für den in Punkt 3 angegebenen Benutzer einzugeben.

5. Zum Abschluss erscheint die Nachricht "MaschinenStopp-Installation erfolgreich".

 

Es muss sicher gestellt sein, dass der IPv4-Ping (Befehl ping -4) zwischen Server und Clients in der Windows-Firewall freigeschaltet ist und die Clients sich per Shutdown-Befehl vom Server (shutdown -s -f -m \\rechner) herunter fahren lassen. Das lässt sich durch Aktivieren der Datei- und Druckerfreigabe in den Ausnahmen der Firewall erreichen. Nach der Installation des Servers unter XP oder Server 2003 sollte in den vier neu erstellten Tasks das Häkchen bei „Task löschen, wenn er nicht erneut geplant wird“ in der Registerkarte Einstellungen entfernt werden. Um die Funktionalität der Tasks zu testen, können sie nacheinander manuell gestartet werden. Das Erscheinungsbild der geplanten Tasks hat sich in den neueren Windows-Versionen stark verändert und sie heißen wieder „Aufgaben“, sind aber nach wie vor durch den Befehl control schedtasks zu erreichen. In der Datei PCListe.txt befinden sich im Urzustand nur drei fiktive Rechner, so dass es zu keinen unerwünschten Effekten kommen kann. Ist alles glatt gelaufen, sollten im Unterverzeichnis Log in den Protokolldateien aktuelle Einträge zu finden sein. Bei Problemen hilft ein Blick in die Datei installation.log. Hier wird die Installation protokolliert und evtl. auftretende Fehler festgehalten.

Das Skript MaschinenStart.vbs überprüft zunächst für jeden in der Datei PCListe.txt aufgelisteten Rechner, ob er vor dem Aufweckversuch ein- oder ausgeschaltet ist. Das Ergebnis wird in der Datei an.txt gesichert, so dass nach der Wartungszeit der alte Zustand wieder hergestellt werden kann. Das ist wichtig, da es durchaus Rechner gibt, die nicht heruntergefahren werden sollen. Jetzt kann der eigentliche Einschaltvorgang stattfinden. An alle aufgelisteten PCs wird das Wake-On-Lan-Paket gesendet. Das Wecksignal besteht aus einer Kennung und 16-mal der Mac-Adresse des Schläfers. Es lässt sich auch manuell durch das Tool wol.exe vom Download-Link erzeugen. Während der Einführungphase ist es von Interesse, welche Rechner sich problemlos wecken lassen und wo Nachbesserung nötig ist. Zu diesem Zweck kann man vor der Aufweckroutine MaschinenStart.vbs das Skript ZustandVorher.vbs laufen lassen und danach ZustandNachher.vbs. Dadurch erhält man eine gute Übersicht über das Weckverhalten aller Rechner.

 

 

Wichtig ist die korrekte Angabe der Subnetz-Maske. Dadurch lassen sich auch Rechner in fremden Subnetzen wecken. Bitte lesen Sie dazu auch den Artikel "Wake-On-Lan über Router".

Rechner, die vom MaschinenStopp-Skript unangetastet bleiben sollen, werden in die Datei Exclude.txt aufgenommen. Natürlich könnte man die zu verschonenden Rechner auch einfach aus der PCListe.txt eliminieren. Da diese aber von Zeit zu Zeit aktualisiert werden sollte, ist der Eintrag in Exclude.txt der bequemere Weg. Das Gegenstück dazu stellt die Datei Include.txt dar: um stromsparresistente Benutzer zu erziehen, werden hier die Rechner vermerkt, die unabhängig vom ursprünglichen Zustand nach Abschluss der nächtlichen Wartungsarbeiten immer heruntergefahren werden sollen. Sollen alle Rechner (außer den in der Exclude.txt aufgeführten) durch das Skript MaschinenStopp.vbs heruntergefahren werden, kann in der Konfigurationsdatei MaschinenStopp.cfg die Option AlwaysShutdown=yes gesetzt werden. Soll die bereits eingesetzte Softwareverteilung das Aufwecken übernehmen und unser Skript nur für’s Schlafenlegen zuständig sein, kann dies mit dem Eintrag Wakeup=no erledigt werden. Das Skript MaschinenStart.vbs sollte trotzdem laufen, um den Einschaltzustand vor dem Wecken zu ermitteln.

Sind alle Einstellungen erledigt und die Startzeiten der geplanten Tasks festgelegt, können die Skripte MaschinenStart.vbs und MaschinenStopp.vbs vom zentralen Rechner ihren Dienst verrichten. Die Logdatei MaschinenStopp.log führt genau Buch über alle Aktionen der Skripte MaschinenStart und MaschinenStopp. Hier wird protokolliert, welcher Rechner wann geweckt und wieder schlafen gelegt, welche Mac-Adresse und welche Broadcastadresse verwendet wurde.