.titleBar { margin-bottom: 5px!important; }

Wake on LAN per CGI-Script aus dem Webmenu der FBF

Dieses Thema im Forum "FRITZ!Box Fon: DSL, Internet und Netzwerk" wurde erstellt von martian, 1 Juni 2005.

  1. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hey, ich würde gernen meinen PC aus dem Internet per WOL aufwecken, und ich denke da bin ich nicht der einzige...
    Sich jedesmal per telnet etc einzuloggen und dann manuell "etherwake" zu starten ist schon sehr umständlich und zeitraubend, daher sollte sich das doch per script automatisieren lassen und über das Webinterface starten lassen, oder?

    Ich weiss, dass das schonmal diskutiert wurde, aber der thread ist jetzt leider veraltet.
    Ich nehme hier zu folgenden Threads Bezug:

    http://www.ip-phone-forum.de/forum/viewtopic.php?t=10646&highlight=wol
    &
    http://www.ip-phone-forum.de/forum/viewtopic.php?t=10406&highlight=wol

    Soo, ich würde nun auch gern dieses CGI-Script:

    Code:
     #! /bin/sh
    MAC=00:11:22:33:44:55
    etherwake $MAC
    echo -e "Content-type: text/html; charset=iso-8859-1\n\n"
    echo -e "<html><body>\c"
    echo -e "etherwake ausgefuehrt nach $MAC"
    echo -e "</body></html>\n"
    
    auf der FB ablegen und das per Aufruf einer URL (http://fritz.box/wol/ wäre wünschenswert) starten.
    Ist das technisch jetzt möglich und könnte man dann in der html-seite noch die MAC-Adresse eingeben bzw diese speichern lassen oder eine Auswahlmöglichkeit zwischen mehreren MACs anbieten?
    Leider bin ich (noch) nicht soweit das selber durchzuführen, könnte mir vielleicht jemand so etwas zusammenstellen und dann am besten per fake-firmware zum einspielen in die Fritzbox hier reinstellen?

    Vielen Dank im Voraus, ich bin sicher diese Lösung würde nicht nur mich glücklich machen =) !
     
  2. RaK

    RaK Neuer User

    Registriert seit:
    18 März 2005
    Beiträge:
    27
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Geht das nicht schn mit dem Callmonitor und einem Anruf?
    Bei Anruf WakeOnLAN.
     
  3. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Öhh, wie mit dem Callmonitor? Meinst du das Windows-Programm? Also das Programm habe ich, aber das läuft ja logischerweise nur wenn der Rechner an ist, außerdem gibts bei mir da in Version 0.91 keine Funktion für WOL, da gibs sowieso nur Einstellungen zur Vorwahl etc oder hab ich da was verpasst!
    Also wenn mein PC läuft muss ich ihn ja nicht aufwecken, ich will WOL natürlich nutzen wenn ich NICHT Zuhause bin und so den Rechner aufwecken.
    Remote Management klappt ja mit dem Trick Port forwarding auf 2. IP (glaube das war 192.168.168.179 oder so) von der Fritz, so kann ich auf z.B. Port 8080 unter meinem dyndns account in die fritz und würde jetzt liebend gerne von dort aus per script ein WOL-Paket an meinen Rechner schicken...
     
  4. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Hi.
    Da man nicht einfach was im Dateisystem der FritzBox ablegen kann, müsstest du dir zuerst mal einen eigene Firmware bauen.
    Und zwar mit dem buildroot von Enrik. Dafür brauchst du Linux.
    Dann sehen wir weiter. :)
    Link

    Du kannst dann unter /var/tmp ein Skript test.cgi anlegen, dass du während des Betriebs ändern kannst.
    Da kann man dann ein bißchen Spielen...

    MfG Oliver
     
  5. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Klingt ja alles schön und gut... Leider bin ich (noch) nicht so der Linux-Crack und kann mir selber keinen Kernel bauen (ist ja auch nicht unbedingt für Anfänger zu empfehlen :))...
    Und wie kann ich das Script dann von der Weboberfläche heraus aufrufen?
    Das Script habe ich ja nicht selbst erfunden sondern nur aus einem früheren thread übernommen, wo jemand das reingestellt hatte...
    Wie ich gelesen habe müssen Scripte unter "/usr/www/[OEM]/cgi-bin" erstellt werden, damit sie aus dem Webinterface heraus aufgerufen werden können
    .
    Also ich bräuchte leider noch ein bisschen mehr Hilfestellung, vielleicht reizt es ja den einen oder anderen Fortgeschrittenen auf diesem Gebiet das mal zu implementieren & zu testen

    Ich stehe natürlich gerne für einen Test des Scripts zur Verfügung, soweit ich es denn auf die box bringen kann und ausführen kann... :wink:
     
  6. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hmm, hat denn keiner hier ne ahnung von sowas und lust sich daran zu versuchen? :?
    oder zumindest einen ansatz bringen: meint ihr denn, dass das alles technisch möglich wäre? d.h. das etherwake per script aufgerufen werden kann, und ihm dabei eine MAC-Adresse übergeben wird?
    und dass der speicher der box für diesen kleinen mod ausreichen würde?

    :idea: alternativ könnte man ja einfach mit einem mod in dieser datei mit dem port forwarding und so einen broadcast and das ganze subnetz der fritzbox vom protokoll UDP auf port 9 etablieren bzw wenn broadcast nicht geht eben an jede IP einzeln, sind ja "nur" 254 :) ?!

    bitte schreibt mal was ihr denkt... grüße martian :roll:
     
  7. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Kann ich mit dem Buildroot auch eine existierende Firmware verändern, oder muss ich komplett "from scratch" beginnen und mir alles wichtige zusammensuchen?

    Sonst könnte ich ja als "Basis" den -mod 0.57 der 8.03.53 nehmen (für die Fon Wlan) und da dann entsprechend das CGI-Script in den "/usr/www/avm/cgi-bin" Ordner tun, zusammen mit ner kopie von etherwake...

    Passt das dann?

    martian
     
  8. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Hi.
    Du kannst deine mod-0.57 Firmware nehmen und unter LINUX entpacken.
    Code:
    tar xf FritzBox.image
    cd var/tmp
    mkdir fs
    dumpsquashfs -x -f filesystem.image -C fs
    cd fs/usr/www/avm/cgi-bin
    ln -s /var/tmp/test.cgi test.cgi
    cd ../../../../..
    mksquashfs fs/ filesystem.tmp -noappend -root-owned -b 16384
    rm -R filesystem.image fs/
    mv filesystem.tmp filesystem.image
    cd ../..
    tar cf etherwak.image var/
    
    Oder so ähnlich... ;-)
    Etherwake ist im mod-0.57 schon drin, oder?
    Jetzt kannst du auf der Box, wenn sie wieder läuft, die Datei erstellen.
    Code:
    vi /var/tmp/test.cgi
    #! /bin/sh
    etherwake 00:11:22:33:44:55
    
    Aufrufen kannst du dein Skript mit http://192.168.178.1/cgi-bin/test.cgi
    Kannst das Skript natürlich auch gleich ins squashfs machen,
    aber zum experimentieren ist es mit dem Link vielleicht erst mal besser.
    Für mehrere IP's kannst du ja verschieden Skripte machen.

    MfG Oliver
     

    Anhänge:

    • tools.zip
      Dateigröße:
      42.2 KB
      Aufrufe:
      164
  9. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Also, hab das mal ausprobiert, und auch wie geplant das etherwak.image erhalten. wenn ich das jetzt aber per fw-update über das webinterface einspielen will klappt da irgendwas nicht, die Info-LED blinkt ne weile aber nach 5 min hab ich dann den stecker gezogen, aber anstatt das die box hinüber ist ist weiterhin die alte fw drauf...
    Und Aufrufen lässt es sich dementsprechend auch nicht.

    und nochwas: gibts ne möglichkeit mit html/php oder so das cgi-script so anzupassen das er nach ner mac-id fragt und halt son eingabefenster dazu anbietet und dann, "auf knopfdruck" ein Magic-Packet an die Mac im Subnetz der fritz schickt?

    Ich weiss nicht was ich falsch gemacht hab, könnte einer von euch das vll auchmal probieren und dann die sourcen (filesystem.image & co) hier reinstellen?

    Mfg martian
     
  10. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Hi.
    Guck mal in das File install, welches nach dem Auspacken der Firmware in /var ist.
    Da gibt es irgendwo ein Abschnitt mit einer Checksummenüberprüfung.
    Da musst du die Zeile mit dem exit entfernen.
    Oder gleich den ganzen Abschnitt. Hatte ich gestern vergessen ;-)
    Code:
    ##################################################################################
    # firmware Files pruefen
    ##################################################################################
    if [ -f /var/tmp/filesystem.image ] ; then
        if ! /var/chksum /var/tmp/filesystem.image ; then
            echo "chksum for file /var/tmp/filesystem.image failed."
            echo "set INFO led to off (modul=7, state=1)"
            echo 7,1>${LED_DEVICE}
            exit $INSTALL_FILESYSTEM_CHECKSUM
        fi
        echo chksum for file /var/tmp/filesystem.image ok
    fi
    if [ -f /var/tmp/kernel.image ] ; then
        if ! /var/chksum /var/tmp/kernel.image ; then
            echo "chksum for file /var/tmp/kernel.image failed."
            echo "set INFO led to off (modul=7, state=1)"
            echo 7,1>${LED_DEVICE}
            exit $INSTALL_KERNEL_CHECKSUM
        fi
        echo chksum for file /var/tmp/kernel.image ok
    fi
    Und wie gesagt, ich denke es ist einfacher, wenn du dir für jede MAC ein eigenes Skript machst...

    MfG Oliver
     
  11. RaK

    RaK Neuer User

    Registriert seit:
    18 März 2005
    Beiträge:
    27
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    War bloed ausgedrueckt von mir. Es gibt im mod.57 ein Script das heisst callmonitor.sh. Das kann man so configurieren, dass die Box beim Anruf auf eine betsimmte Nummer ein etherwake absetzt. Damit kannst du per Telefonanruf einen Rechner aufwecken.

    Siehe http://www.wehavemorefun.de/fritzbox/Features_und_Bilder_zu_Modifikationen
     
  12. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    callmonitor.sh oder doch web oberfläche probieren?

    Okay, das mit dem callmonitor.sh verstehe ich, allerdings komme ich bei der Konfiguration nicht weiter, ich habe da noch ein paar Fragen :?: :
    bei mir hängt die box an nem analogen anschluss, d.h. ich hab nur eine rufnr im festnetz und bisher auch nur eine SIP-Nr, die mir 1und1 nämlich auf meiner Festnetznr eingerichtet hat. Ist das WOL per Anruf (über anruferkennung) nun auch über eine spezielle SIP-Nummer zu starten, die ich mir dafür einrichte, oder geht das nur mit festnetznummern?
    und in welchen dateien muss ich meine zu weckende MAC-Adresse ablegen und wo die SIP(MSN)-Nummer?

    Ansonsten wäre das Web-script aber vielleicht doch praktischer, auch wenn ich es leider nicht hinbekomme... :eek:

    wollt ihr es nicht mal für mich versuchen? 8)

    Mfg martian
     
  13. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hmm, scheint ja leider keiner bereit dazu... bin ich denn auf einmal der einzige in diesem forum, den ein WOL-feature glücklich machen würde?
     
  14. Polytheus

    Polytheus Neuer User

    Registriert seit:
    23 Juni 2005
    Beiträge:
    1
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mich würde das auch glücklich machen... Hat sich hier schon was ergeben?
     
  15. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    schade, schade... sieht so aus als können wir unseren wunsch vom wake-on-lan vergessen. ich schaffs einfach nicht und jemand der es für uns anfänger macht bzw mal ne schritt-für-schritt anleitung bastelt gibs nicht :?
     
  16. Maruu

    Maruu Neuer User

    Registriert seit:
    21 Apr. 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Re

    So also es hat ja jemand schon mal bei mir angefragt zwecks Etherwake und co hatte aber bis heute noch Prüfungen deswegen keine Zeit gehabt.

    Wenns jetzt noch benötigt wird dann könnte ich mal schaun das ich was bastle, wills noch jemand?

    Da ich schon ne Weile nix mehr mit der FB gemacht hab brauch ich nochmal ein paar Infos:

    1.) Den Webserver von der FB kann ich ja so nicht benutzen oder???
    also ich meine ich kann da nicht ohne weiteres per telnet drauf und dann in das root verzeichnis von dem meine Skripte reinlegen (hatte ja damals nen http-Server kompiliert weiß es nur nicht mehr)

    2.) Das Firmwareimage zu verändern hab ich eigentlich keine Lust, müsste man dann ja jedes mal wieder abändern wenn wenn ne neue Firmwareversion raus kommt (oder seh ich das falsch). Also deshalb gabs da doch so nen trick das man ein Pseudoimage hochläd das nur eine Datei enthält und die dann grad auch den Telnetzugang freischaltet. Konnte man da nicht Befehle reinschreiben?

    3.)Mein Vorschlag wäre: Ganz normale Firmware einspielen, dann gerade so ein Skript basteln das man auch per Firmwareupdate hochläd und dieses skript läd dann von nem Webserver im Internet alle benötigten Dateien also das etherwake, den Webserver für die CGI-unterstützung und ein CGI-skript um drauf zuzugreifen.

    Jetzt brauch ich aber erst mal von euch die Infos ob das noch so alles stimmt wie ich das gedacht hab?

    Wenn ja, sag ich mal is das ned sooo wild das Ganze hinzubekommen, den Webserver hab ich, sourcen zu etherwake gibts bestimmt irgendwo (oder hat die nicht schon jemand für die FB kompiliert?) und dann is es ja nurnoch das CGI und das startscript zu schreiben.

    Naja

    Gruß

    Maruu
     
  17. martian

    martian Mitglied

    Registriert seit:
    26 Mai 2005
    Beiträge:
    273
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Also, etherwake gibts schon für die FBF, zu finden in dem mod 0.57, müsste hier im Forum zu finden sein, ansonsten kann ich auch bei bedarf noch mal stöbern und das auf meinen webspace laden...
    Auch das CGI-Script gibts eigentlich schon (hab aber keine Ahnung ob das funktioniert...)
    Code:
     #! /bin/sh
    MAC=00:11:22:33:44:55
    etherwake $MAC
    echo -e "Content-type: text/html; charset=iso-8859-1\n\n"
    echo -e "<html><body>\c"
    echo -e "etherwake ausgefuehrt nach $MAC"
    echo -e "</body></html>\n" 
    Wenn du jetzt das alles zu so einer Datei basteln könntest, die man in der FB hochladen kann und man dann unter einer speziellen URL (mein Vorschlag: http://fritz.box/wol.cgi oder nur http://fritz.box/wol) eine MAC-Adresse eingeben kann wäre das einfach einsame Spitze!
    Ein anderer Lösungsvorschlag/kleine Zusatzaufgabe wäre, die Möglichkeit Broadcasts ins LAN zu erlauben, momentan lässt sich in den Portforwarding-regeln keine Weiterleitung auf eine *.*.*.255 einrichten.

    Vielen Dank schonmal im Voraus, das du dich darüm kümmerst!
    Leider ist jetzt meine Zeit gekommen und ich werde bis Anfang August im Prüfungsstress versinken, schaue aber zwischendurch mal rein...
    Vlg martian
     
  18. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Hi.
    [s:56ba33ecbd]Ohne die Firmware zu modden kann man definitiv kein cgi-Skript über den websrv der Fritz aufrufen => eigener thttpd auf einem anderen Port...[/s:56ba33ecbd]
    Die Skripte des AVM-httpd werden so aufgerufen:
    http://fritz.box/cgi-bin/system_status

    MfG Oliver
     
  19. buehmann

    buehmann Aktives Mitglied

    Registriert seit:
    11 Juni 2005
    Beiträge:
    1,810
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Sag niemals nie. :)
    Folgendes Skript legt zwei Beispieldateien an, ein CGI-Skript und eine normale HTML-Seite, die dann ganz normal über den Webserver aufgerufen werden können; URLs siehe unten. (Das Web-Interface der Box funktioniert natürlich nach wie vor.)
    Code:
    #!/bin/sh
    cd /var
    mkdir -p html.new/cgi-bin
    cp -d html/index.html html/html html.new
    for script in html/cgi-bin/*; do
      ln -s ../../html.orig/cgi-bin/$(basename $script) html.new/cgi-bin
    done
    mv html html.orig
    mv html.new html
    
    # sample HTML page: http://fritz.box/hello/world.html
    mkdir html/hello
    echo '<html><body>Hello, world!</body></html>' > html/hello/world.html
    
    # sample CGI program: http://fritz.box/cgi-bin/hello?Fritz
    cat > html/cgi-bin/hello <<'END'
    #!/bin/sh
    echo -e "Content-Type: text/plain\n\n"
    echo Hello, ${QUERY_STRING:-world}! This is your environment:
    set
    END
    chmod +x html/cgi-bin/hello
    
    Die Idee/der Trick dahinter: Das Root-Verzeichnis des Webservers ist /usr/www/html; das ist aber ein symbolischer Link nach /var/html. Von /var/html zeigt dann im Normalfall ein weiterer Link zurück nach /usr/www/<OEM>/. Da /var/html im beschreibbaren Bereich des Dateisystems liegt, kann man sich einfach dazwischenklinken.
     
  20. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    1
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Ja, die hatten das irgendwann mal eingeführt mit dem Link, war nicht von Anfang an. Wahrscheinlich benutzen die bei AVM das für ihre Tests...
    Irgendwie geht bei mir die Zeile mit dem QUERY_STRING aber nicht! Da kommt dann nur eine leere Datei.

    MfG Oliver

    edit: So siehts dann doch richtig gut aus! Da kann man ja sogar mit einem Skript verschiedene Rechner wecken. 8)
    Oder gleich über eine eigene Webpage!
    Code:
    #! /bin/sh
    echo 'Content-type: text/html'
    echo
    echo '<html>'
    echo '<head>'
    echo '<title>Environment</title>'
    echo '</head>'
    echo '<body>'
    echo angekommen ist: `echo $QUERY_STRING|sed -e 's/\&/\&amp;/g' -e 's/</\&lt;/g'
    echo '<h1>Environment</h1>'
    set|sed -e 's/\&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/$/
    /'
    echo '</body>'
    echo '</html>'