• Teilen
  • Bookmark "Shutdown-Skript" auf del.icio.us
  • Bookmark "Shutdown-Skript" auf Digg
  • Bookmark "Shutdown-Skript" auf Reddit
  • Bookmark "Shutdown-Skript" auf StumbleUpon
  • Bookmark "Shutdown-Skript" auf Facebook
  • Bookmark "Shutdown-Skript" auf Twitter
  • Bookmark "Shutdown-Skript" auf Slashdot

Shutdown-Skript

Dieses Skript überprüft alle 10 Minuten wie viele Computer im Netzwerk online sind und fährt den Server, wenn kein dieser Rechner mehr online ist, das System nach einer bestimmten anpassbaren Zeit herunter (Standard: 30 Minuten).

Softwarevoraussetzungen: Cron | Texteditor
Schwierigkeitsgrad: Mittel
Ausgetestet mit folgenden Betriebssystemen: Ubuntu | Debian | teilweise auch andere Distributionen

Achtung! sudo: In dieser Anleitung verdeutlicht der Befehl sudo, dass die folgende Codezeile mit Root-Rechten ausgeführt werden muss. In normalen Ubuntu Installationen (Root-/VServer siehe Debian) kann dies durch den Befehl sudo erreicht werden.
Bei Debian wird bei der Installation ein Passwort für den Root-Benutzer festgelegt, so kann man sich entweder direkt als Root oder als „normaler“ Benutzer mit Eingabe von su als Root einloggen (Root-Passwort benötigt) → sudo bleibt dann überflüssig!

Benötigte Pakete installieren

Zunächst muss nmap installiert werden:

user@server:~$ sudo apt-get install nmap

Einrichtung

Dazu /usr/local/bin/powersaver.sh mit Nano öffnen:

user@server:~$ sudo nano /usr/local/bin/powersaver.sh

…..und mit diesem Code füllen:

powersave.sh
#!/bin/bash
#
# (cc:by-sa) 2007 Marco Gabriel, http://www.marcogabriel.com/
#
# Powersaver.sh
 
###
# CONFIG
###
 
# Filename of the statusfile
STATUSFILE="/tmp/powersaver-status"
 
# which ip range should be checked?
# this example looks in "192.168.1.10 to 192.168.1.30" 
# and "192.168.178.10 to 192.168.178.30"
RANGE="192.168.1,178.10-30"
 
# how many clients are always on (other servers, routers, etc)
MINCLIENTS=0
 
# shutdown after how many retries?
RETRIES=2
 
###
# END CONFIG
###
 
NUMCLIENTS=`nmap -sP $RANGE -oG - | grep "Host" | grep "up" | wc -l`
 
if [ $NUMCLIENTS -le $MINCLIENTS ]; then
    if [ ! -f "$STATUSFILE" ]; then
        echo "COUNT=$RETRIES" > $STATUSFILE
    fi
    . $STATUSFILE
    if [ $COUNT -le $MINCLIENTS ]; then
        echo "Shutdown, my dear..."
        shutdown -h now;
    else
        let COUNT=$COUNT-1
        echo "COUNT=$COUNT" > $STATUSFILE
    fi;
else
    if [ -f "$STATUSFILE" ]; then
        rm $STATUSFILE
    fi
fi

Konfigurieren

Die Konfiguration am Anfang muss wie in den Kommentaren (#) angegeben an die eigenen Bedürfnisse angepasst werden:

###
# CONFIG
###
 
# Filename of the statusfile
STATUSFILE="/tmp/powersaver-status"
 
# which ip range should be checked?
# this example looks in "192.168.1.10 to 192.168.1.30" 
# and "192.168.178.10 to 192.168.178.30"
RANGE="192.168.1,178.10-30" # Hier die zu überprüfenden IPs angeben
 
# how many clients are always on (other servers, routers, etc)
MINCLIENTS=0                # falls in RANGE ein PC oder Router angegeben wurde, der immer an, hier die Anzahl eintragen
 
# shutdown after how many retries?
RETRIES=2                   # nach wie vielen missglückten Versuchen PCs zu erreichen, soll der Server heruntergefahren werden? (2=30min, 3=40min, usw.) 

In Cron eintragen und ausführbar machen

Ausfürbar machen:

user@server:~$ sudo chmod +x /usr/local/bin/powersaver.sh

In Cron alle 10 Minuten ausführen:

user@server:~$ sudo crontab -e     # die Crontab von Root öffnen

…und durch folgenden Inhalt erweitern:

*/10 * * * *      /usr/local/bin/powersaver.sh



chrisge 2016/02/18 22:42

Diskussion

ThorstenGuest, 2013/03/18 08:09

Hallo,

das oben genannte Script funktioniert so bei mir (Ubuntu 12.04LTS) nicht!

Erstmal müsste man hier noch erwähnen, dass man nmap mit apt-get install installieren sollte, falls es noch nicht auf dem System ist.

Folgendes musste dann noch abgeändert werden:

NUMCLIENTS=`nmap -sP $RANGE -oG - | grep “ Host “ | grep “ Up “ | wc -l` (Leerzeichen nach und vor “ entfernen)

Erst nach dieser Änderung listet er die Hosts auf, die auch wirklich als „Up“ von nmap erkannt werden. Vorher fährt er einfach nach 30min runter, ob ein Client online ist oder nicht….

Gruß

Thorsten

Christoph Winklerchrisge, 2013/03/18 22:30

Hallo Thorsten,
mit nmap hattest du Recht – vielen Dank für den Tipp, habe die Anleitung umgehend erweitert. Die Ausgabe von nmap ist davon abhängig, ob ein Range der Form 192.168.4.120-123 oder 192.168.4.0/24 gescannt wird, deshalb ist mir der Fehler leider noch nicht aufgefallen. In ersterem Fall ist es tatsächlich notwendig noch einen grep nach up durchzuführen. Ich habe auch dies korrigiert.
Nochmals vielen Dank für die Hinweise!

Gruß
Christoph

babaGuest, 2016/02/18 20:46

hallo hab auch mal das Shutdown-Skript ausprobiert,aber bei mir funktioniert es nicht auf meinen Debian Server,habe eine Stunde gewartet es tut sich nichts, hab auch schon andere Foren gefunden und solche Skripte ausprobiert aber nichts hat funktioniert, könnt ihr mir helfen?

mfg

Christoph Winklerchrisge, 2016/02/18 22:42

Hallo baba,
was hast du bei den Parametern (RANGE, MINCLIENTS, usw.) eingetragen? Wie sieht deine Crontab von root aus (private Dinge ruhig kürzen)?

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
NOJZJ
 
  • Teilen
  • Bookmark "Shutdown-Skript" auf del.icio.us
  • Bookmark "Shutdown-Skript" auf Digg
  • Bookmark "Shutdown-Skript" auf Reddit
  • Bookmark "Shutdown-Skript" auf StumbleUpon
  • Bookmark "Shutdown-Skript" auf Facebook
  • Bookmark "Shutdown-Skript" auf Twitter
  • Bookmark "Shutdown-Skript" auf Slashdot
Sonstiges
Drucken/exportieren
Archiv

Archivierter Inhalt der alten Seite