02.06.2010

Den digitalen Stecker ziehen

headerbild
Von Tobias Scheible

Am Ende jedes Arbeitstages werden alle Rechner, Drucker und Lichter vom letzten noch verbliebenen Mitarbeiter ausgeschaltet. Damit wird nicht nur Strom gespart, sondern auch die Komponenten geschont und damit die Lebensdauer erhöht. Bisher liefen unsere internen Server die ganze Zeit – aber warum?

Unser Datenserver wird nur direkt von unseren internen Mitarbeitern benötigt, es wird nicht von extern darauf zugegriffen. Also lag die Überlegung nahe, diesen Server auszuschalten, sobald kein Mitarbeiter mehr anwesend ist. Klar kann man den Power-Button so konfigurieren, dass der Server bei einer Betätigung einfach herunterfährt. Dann muss der letzte Mitarbeiter am Abend den Server manuell ausschalten und der erste schaltet ihn am nächsten Morgen wieder ein. Eine nicht so ganz runde Lösung, die wahrscheinlich häufig vergessen wird. Also hab ich mir einen eleganteren Weg überlegt: Das automatische Hoch- und Herunterfahren des Server ohne menschliches Zutun.

 

1. Schritt - IP Scan und Shutdown

Als erstes muss überprüft werden, ob ein Mitarbeiter noch arbeitet. Das funktioniert am einfachsten über die Überprüfung, welche IP-Adressen sich aktuell im Netzwerk befinden. Da die IP-Adressen der Rechner automatisch per DHCP vergeben werden, ist der Bereich fest definiert. In diesem Bereich pinge ich jede Adresse an und überprüfe so, ob ein Rechner aktiv ist. Bekomme ich eine negative Antwort, teste ich die nächste Adresse. Sobald ich eine positive Antwort zurückbekomme, breche ich das Script ab. Läuft das Script durch den kompletten Bereich durch, ohne einen Rechner zu finden, wird der Server heruntergefahren. Am Anfange hat es noch etwas gehakt, ich hatte für  den Shutdown nicht die absolute Pfadangabe benutzt. Das Script habe ich so eingerichtet, dass es jede halbe Stunde per CronJob ausgeführt wird.

Shell-Script, das die IP-Adressen von 192.168.0.160 bis 192.168.0.200 überprüft:

#!/bin/bash

i=160
while [ $i -le 200 ]
do
echo -e "\nteste 192.168.1.$i"
/bin/ping -q -c1 192.168.1.$i &> /dev/null
if [ "$?" -gt 0 ]; then
echo 192.168.1.$i nicht erreichbar!
else
echo 192.168.1.$i erreichbar!
echo mindestens ein Rechner ist noch aktiv
exit 0
fi
i=`expr $i + 1`
done
echo kein aktiven Rechner gefunden - shutdown
/sbin/shutdown -h now
exit 0

 

2. Schritt - Start über das Netzwerk

Nachdem das automatische Abschalten nun funktioniert, muss der Server auch wieder aufgeweckt werden, wenn er gebraucht wird. Das funktioniert über das Wake On Lan Protokoll. Unter Mac OS X übernimmt das die gleichnamige Freeware von ReadPixel. Dort muss man die IP- und die MAC-Adresse des Zielrechners eintragen und kann ihn per Knopfdruck starten. Sehr praktisch ist auch die automatische Scan-Funktion, die alle aktiven Rechner findet.

Wake On Lan Anwendung für Mac OS X

 

3. Schritt - automatisch Starten per AppleScript

Das manuelle Starten des Servers ist eine wenig elegante Lösung, aber zum Glück kann WakeOnLan per AppleScript oder per Automator ferngesteuert werden. In der Hilfefunktion finden sich etwas versteckt ein paar praktische Beispiele, mit denen als Vorlage es nur weniger Zeilen bedarf, um ein Script zu erstellen, das den Server startet. Anschliessend noch per "Speichern unter" als Programm speichern und den Startobjekten in den Systemeinstellungen des eigenen Benutzers hinzufügen.
Beim Testen, also während der Rechner lief, hat alles anstandslos geklappt. Allerdings trat beim Neustart nicht das gewünschte Ergebnis ein. Ich habe vermutet, dass es an der Initialisierung der Netzwerkverbindung per DHCP liegt, dass der Befehl ausgeführt wird, bevor die Verbindung steht. Daraufhin habe ich die Holzhammer-Methode ausgepackt und eine Wartezeit von 20 Sekunden eingefügt. Danach führt das Script den Befehl noch einmal aus.

AppleScript zum automatischen Starten:

tell application "WakeOnLan"
wakeup "192.168.1.1"
end tell

delay 20

tell application "WakeOnLan"
wakeup "192.168.1.1"
end tell

quit application "WakeOnLan"

 

4. Schritt - Start per Internet

Interessant ist auch der Start per Handy. Dazu muss einfach der Port 9 der UDP Verbindung im Router auf den Server umgeleitet werden. Und nun braucht man nur noch eine entsprechende Anwendung, die WakeOnLan unterstützt oder benutzt eine Web-Service. Wer ein Widget oder ein eigens Web-Tool entwickeln möchte, sollte einen Blick auf folgenden PHP-Code werfen.

 

Fazit

Mit dieser Methode lassen sich ganz bequem Strom sparen und die Komponenten schonen – und somit auch ihre Laufzeit erhöhen. Es ist zwar eine recht einfache Lösung, aber sie erfüllt die Anforderungen und funktioniert ohne Probleme. Mit zwei Dingen werde ich mich aber in Zukunft noch beschäftigen: Zum einen sollte die Überprüfung der IP-Adressen zweimal im Abstand von 10 Minuten durchlaufen werden, denn wenn ein Rechner gerade neu startet oder aus einem anderen Grund nicht erreichbar ist, schaltet sich der Server aus. Zum anderen sollte das AppleScript überprüfen, ob der Server auch wirklich gestartet ist und sich im Fehlerfall bemerkbar machen.

 

Content Developer

Das Netz ist das chaotischste und zugleich erfolgreichste
Medium, der Marketingwelt. Deshalb spielt das Internet
bei uns die zentrale Rolle in der Kommunikation.

Ihr Ansprechpartner
im Bereich Internet:

Tobias Scheible
Concept Developer
zum Profil

 

Tags

Zurück

Einen Kommentar schreiben

Über Uns

Gute Kommunikation führt zum Erfolg, wenn man Kunden
für seine Sache gewinnt. 
Für Ihr Unternehmen bieten wir die gesamte Bandbreite, 
von der klassischen Werbung bis zum Online-Marketing. Erfolgreich, wie die viele Projekte belegen.

Mit uns erreichen Sie Ihr Ziel.

Agentur Blog

Im Gute Aussicht Blog erfahren Sie Trends, Meinungen, Berichte zu Themen wie Online-Marketing, Nachhaltigkeit in der Werbung und aktuelle Projekte. Hier schreibt das Team für Sie.

Suche

Archiv

Tag Cloud

Twitter

≥   Gute Aussicht auf Twitter