Eduard Prezer Logo
DJ Fotografie Über mich Links Blog Gästebuch Impressum

Webbasierte WOL Verwaltung mit Raspberry Pi

Scenario: Man hat einen Server oder eine NAS Zuhause. Obwohl diese schon recht Stromsparend ist, möchte man diese nicht 24/7 laufen lassen um die eigenen Stromkosten gering zu halten. Um dieses Ziel zu erreichen, sollte sich das Gerät bei unserer Abwesenheit ausschalten.

Idee: Mithilfe eines Raspberry Pi (Verbrauch nur 3,5W) bauen wir eine Web Applikation, welche Netzwerkgeräte überwachen und steuern kann. Mithilfe von WOL (Wake-on-LAN) lassen sich ausgeschaltete Geräte auffwecken. Über SSH lassen sich remote Geräte ausschalten. Das ausschalten und aufwecken kann sowohl Zeitgesteuert oder auch Überwachungsgesteuert erfolgen. Beispiel: Ich verlasse das Haus, womit mein Smartphone nicht mehr per WLAN erreichbar ist. Nach einer bestimmten Zeit wird ein shutdown des Heimservers über SSH initiniert. Bin ich wieder Zuhause, also mein Handy wieder erreichbar, wird der Heimserver über WOL wieder aufgeweckt.

Implementierung:

Zunächst muss Raspbian (Eine angepasste Debian Linux Distribution) auf dem Raspberry installiert werden. Das richtige Image finden wir unter https://www.raspberrypi.org/downloads/. Eine Anleitung zum Installieren des Grundsystems findet sich unter https://www.raspberrypi.org/documentation/installation/installing-images/.

Shell als root ausführen:

# sudo su

Paket update durchführen:

# apt-get update && apt-get -y upgrade

Nginx, PHP-FPM, Nmap und wakeonlan  installieren

# apt-get install nginx php5-fpm nmap wakeonlan

Nginx starten 

# sudo /etc/init.d/nginx start

Nginx Konfiguration für PHP-FPM Anpassen

# nano /etc/nginx/sites-enabled/default

Die betreffenden Teile der Konfiguration sollte in etwa so aussehen (entsprechend ergänzen oder auskommentieren):

server {
    [...]
    index index.php index.html index.htm
    [...]
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ .php$ {
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    
    #    # With php5-cgi alone:
    #    fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;

    }
    [...]
}

 

Nun können wir einfachen PHP Code erstellen der unsere aufgaben erledigen soll.

<?php
exec("nmap -sn 192.168.178.*",$output);
print_r($output);
exec("wakeonlan 00:11:22:33:44:55");
?>

... in Arbeit