Server bei Aufruf einer Homepage per WOL wecken

  • Hallo zusammen,

    ich bin schon seit einiger Zeit dabei zu versuchen meinen Homeserver bei Aufruf einer Homepage per WOL zu wecken.
    Leider waren alle Versuche mit diversen PHP oder auch DD-WRT Skripten bisher erfolglos :S

    Aber vielleicht hat jemand in dieser findigen Community ja den entscheidenden Tip für mich ;)


    Der Hintergrund ist folgender:
    Ich habe daheim einen Homeserver stehen, auf dem diverse Seiten wie die TV-Weboberfläche von Argus, Owncloud oder die MediaBrowser3 Weboberfläche gehostet sind. Da ich den Homeserver nicht 24/7 brauche, schaltet sich dieser nach 10min per Smartpower automatisch in den Ruheszustand. Als Router setzte ich einen Cisco EA6500 mit DD-WRT Firmware ein. WOL ist eingerichtet und funktioniert auch von außerhalb. Derzeit wecke ich den Router eben bei Bedarf per WOL über mein Handy oder die Weboberfläche des Routers.
    Das ist zwar funktional, aber natürlich nicht ganz so komfortabel :P

    Neben dem Homeserver habe ich noch ein "richtiges" Webhostingpaket, über das ich auch per Seitenumleitung auf die Websites des Homeservers zugreife. Deshalb war meine Idee, dort einfach ein PHP Skript zwischenzuschalteten, um den Server daheim per WOL zu wecken, falls die aufgerufene Website nicht direkt verfügbar ist, und dann nach erfolgreichem Wecken per WOL, auf die eigentliche Seite weiterzuleiten.

    Ich habe schon diverse Skripte probiert, und das abfragen des Onlinezustandes einer Seite und das weiterleiten funktionieren auch. Leider scheitert es immer wieder beim versenden des WOL Paketes. Kann es sein das PHP diese Funktion standardmäßig gar nicht unterstützt? Habe ich hier irgendwas übersehen? Welch Möglichkeiten gibt es hier vll. noch für mich?


    Das Skript/die Funktion sollte also in etwa so aussehen.

    Beste Grüße und schonmal vielen Dank für eure Tips ;)

    3 Mal editiert, zuletzt von CM000n (1. September 2014 um 11:13)

  • Hi DDD, dank für die Hilfe.
    Leider verstehe ich das nicht ganz ?(

    Derzeit wecke ich ja auch bereits von außerhalb und nicht nur im LAN!
    Das Handy schickt ja ein WOL Paket über einen bestimmten Port an meine DynDNS Adresse von Zu Hause.
    Der Router daheim leitet alle Eingänge auf diesem Port an die Broadcast Adresse weiter und der Rechner mit der passenden MAC Adresse startet.
    Das funktioniert wie gesagt auch tadellos....

    Warum sollte es also nicht klappen, wenn nun ein PHP Skript ein WOL Paket an diese DynDNS Adresse schickt?

  • Ok, scheint wohl mittlerweile auch übers Internet zu gehen, kenne das nur aus dem LAN dass es dort halt von den Routern meist geblockt wird.
    Deswegen dachte ich wird das auch im Internet geblockt. Aber dort wird das wohl nicht als Broadcast an alle geschickt sondern nur an diese
    IP von deinem DynDNS Namen.

    Dein Problem ist dann aktuell dass du PHP dazu kriegen musst ein WOL Paket zu versenden. Ob das mit PHP geht weiß ich gar nicht, da wissen vielleicht PHP Programmierer besser, kann die Sprache leider nicht.

  • Klar, das Broadcasten würde dann ja der Router übernehmen. ;)
    Im Prinzip muss nur ein Paket (nach der oben erwähnten Regel) über einen bestimmten Port an die DynDNS Adresse geschickt werden.


    Das Problem mit den meisten Routern ist übrigens, dass IP's zum Großteil einfach aus deren ARP Tabellen gelöscht werden, wenn sie inaktiv sind und sie kein WOL Broadast beherrschen.
    Mit DD-WRT als Firmware kann man sowas glücklicherweise umgehen :)

    Jetzt hoffe ich mal, dass vll noch jemand ne Idee zu einem Skript hat :thumbup:

    Einmal editiert, zuletzt von CM000n (1. September 2014 um 23:31)

  • Fritzbox kannst du so einreichten, das ein Port zu einer IP weiter geleiet wird,
    und im Zweiten Schritt gibt es die Möglichkeit, das der Rechner beim Aufruf über Internet gestartet werden kann...
    aber wie das in deinem Falle geht, weiß ich leider nicht. mein Problem war dann, das der Server immer mal wieder an ging. Da warscheinlich jemand versucht lücken im System zu probieren, und alle ip's durchpingt.... kA

    HTPC: Intel Haswell G3220 mit Win7 und Gotham
    Tab: Samsung Galaxy Tab 2 mit Gotham

    Server: Acer H340 auf WHS2011 mit MySQL Datenbank

  • Stimmt, dass mit der Fritzbox wäre wohl auch eine Möglichkeit gewesen, wenn ich denn eine hätte :D Aber für genau solche Spielereien mag ich AVM.


    NAch ein bisschen hin und her habe ic es jetzt doch noch mit DD-WRT zum laufen bekommen
    Ist zwar nicht so komfortabel einzurichten wie bei ner Fritzbox und ein wenig tricky, funktioniert aber tadellos :thumbup:
    Ich schreibe hier mal ein kleines How-To, vielleicht kann ja jemand etwas damit anfangen. Schließlich gibt es DD-WRT kompatible Router bereits für wenig Geld.

    Also, das einzige das ihr dafür braucht ist ein Router der DD-WRT kompatibel ist und einen USB Anschluss hat!

    Zuerst muss dann bei diesem Router unter dem Administration(Management) Tab der JFFS2 Support aktiviert werden:

    Externer Inhalt s1.directupload.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.



    Als nächste muss ein USB Stick mit Linux kompatiblen Dateiformat (wie EXT3) eingesteckt und im Services(USB) Tab unter JFFS gemounted werden. Evtl. ist hier ein Neustart des Routers notwendig, damit der Stick gemounted wird:

    Externer Inhalt s7.directupload.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.



    Also nächste muss, damit das Skript richtig funktioniert unter Services(Services) der Syslog aktiviert werden. .
    Die Angabe zum Remot Server lässt man dabei leer:

    Externer Inhalt s1.directupload.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.



    Dann muss unter Security(Firewall) ebenfalls das logging aktiviert werden. Der Loglevel muss dabei auf Hoch gesetzt und unter den Optionen "Akzeptiert" eingeschaltet werden:

    Externer Inhalt s7.directupload.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.



    Jetzt müssen wir uns via SFTP auf dem Router einloggen und das Skript im jffs Ordner platzieren.
    Öffnet für das Skript einfach eine Textdatei und fügt folgenden Code ein. Danach ändert ihr den Namen/den Dateityp einfach in XYZ.sh (In meinem Fall habe ich sie startup.sh genannt).
    Natürlich müssen die Portnummer, die Rechner IP (zu dem die Port Weiterleitung geht un der eingeschaltet werden soll) und die MAC Adresse noch für eure BEdürfnisse angepasst werden. ;)

    Speichert das Skript nun via SFTP mit einem Programm wie WinSCP im jffs Ordner eures Routers:

    Externer Inhalt s14.directupload.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.



    Ok, fast fertig. Jetzt müssen wir aber nochmal kur zum Webinterface unseres Routers zurück.
    Geht zu Administration(commands/diagnose) und macht das Skrip mit folgendem Befehl ausführbar: chmod +x /jffs/startup.sh

    Externer Inhalt s1.directupload.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.



    Ok, jetzt ist das Skript ausführbar und kann ganz einfach mit folgendem Befehl gestartet werden: /jffs/startup.sh
    Wenn ihr wollt das das Skript auch nach einem Router neustart ausgeführt wird, müsst ihr es ganz einfach als Startup speichern:

    Externer Inhalt s14.directupload.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.



    Das wars, jetzt sollte euer Server automatisch aufachen, wenn jemand die Homepage unter dem im Skript angegeben Port aufruft.
    I meinem Fall startet der Server nun automatisch, wenn ich auf dessen MediaBrowser zugreife :thumbup:

    Falls ihr den aktuellen Status des Skripts anscheuen wollt, könnt ihr das einfach unter folgender URL tun: http://192.168.1.1/user/wol.html

    Externer Inhalt s1.directupload.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.






    So, hoffentlich kann jemand was damit anfangen. Viel Spaß damit ;)

  • Das i-Tüpfelchen wäre jetzt natürlich noch, wenn ich dennoch ein PHP oder Javaskript auf dem Webserver dazwischen schalten könnte, dass den Onlinestatus der Seite checkt und den Besucher darüber benachrichtigt, dass der Server geweckt wird.
    Der normale Timeout von Browsern reicht zwar dafür aus, um die Seite aufzurufen, aber es fühlt sich halt trotzdem erstmal ein paar Sekunden so an als würde sich nichts tun.
    Habe momentan aber auch noch eine normale HDD im Server. Vll tausche ich die mal gegen ne SSD. Dann wird das aufwachen ja auch nochmal flotter :)

    Leider habe ich aber bislang noch kein PHP oder Javaskript gefunden, dass den Onlinestatus der Seite korrekt abfragen könnte und den Server dabei weckt ...komisch ?(

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!