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

Maruu schrieb:
OK nun gehts ans pseudoimage. Das ist doch mit tar gepackt oder?
Muss ich da spezielle Einstellungen beachten?
Bei meinem tar (tar (GNU tar) 1.15.1) muss ich "--format=oldgnu" angeben, damit das busybox-tar auf der Box das Archiv entpacken kann.
 
Hi.
Ich weiß zwar nicht warum, aber auf einmal geht das mit dem "stty erase ^H". Als ich das schon mal probiert habe, hatte es nicht funktioniert...

MfG Oliver
 
Re

Hallo!

Hab noch ein kleines Problem, mein CGI-Skript sieht folgendermaßen aus(nur teile davon):

#!/bin/sh
ADRESSE=`echo $QUERY_STRING|sed -e 's/\&/\:/g' -e 's/\=//g' -e 's/MAC.//g'`
RETURN=`/var/test/etherwake $ADRESSE 2>&1`
if [ -z $RETURN ]
then
echo "Befehl wurde erfolgreich ausgeführt!"
else
echo "Es gab einen Fehler beim ausführen des Befehls!

"
fi

So der Sinn der Sache ist, ich bekomm eine MAC-Adresse im QueryString übergeben die ich mit den sed kommandos auseinanderbastle, das passt auch.
Dann will ich mit dem Befehl etherwake einen PC im Netzwerk über WakeOnLan aufwecken.
So nun will ich überprüfen ob der Befehl richtig ausgeführt wurde, also ob alles OK ist oder ob z.B. die MAC-Adresse falsch angegeben wurde.
Ich hatte mir das so gedacht das ich einer Variablen (RETURN) die Ausgabe des Befehls etherwake zuweise. Sollte diese leer sein (die -z option im if-Teil) dann is alles ok wenn nicht dann stimmt was nicht.
Wenn denn Befehl erfolgreich ausgeführt wurde, dann geht alles. Aber wenn z.B. eine falsche MAC-Adresse angegeben wurde kommt folgender Fehler:

[: The: unknown operand

dazu muss man sagend as in der Variablen RETURN folgendes steht:

ether-wake: The Magic Packet host address must be specified as - a station address, 00:11:22:33:44:55, or

Naja hab kein Plan wieso der Fehler kommt, er muss im if-Teil sein. Weiß jemand woran es liegt oder wie ich es anders, besser machen kann?

MFG

Maruu
 
Hi.
Geht's nicht damit:
Code:
if var/test/etherwake $ADRESSE2>/dev/null; then
Wobei man ja bei etherwake nicht weiß, ob wirklich ein Rechner aufgeweckt wurde, oder?

MfG Oliver
 
Ne es geht nicht drum ob der Rechner wirklich aufgeweckt wurde sondern ob die Syntax von der MAC Adresse also dem etherwake Aufruf richtig is.
Leider klappt deine beschriebene Methode auch nicht .
Da bringt er eimmer das es fehlgeschlagen ist. Wenn ich Klammern drum rum mach [ ... ] danns agt er das es immer erfolgreich ist.

Gruß

Maruu

PS: Ich könnte das auch weg lassen?
 
Re: Re

Guten Morgen, dein Problem ist, dass die Shell den Wert von RETURN noch in Worte aufteilt, bevor sie ihn an das Kommando [ übergibt, deswegen bekommt [ die Argumente "-z", "etherwake:", "The", "Magic", etc. Willst du das verhindern: Doppelte Anführungszeichen um $RETURN.

Wenn du aber wirklich nur zwischen okay und nicht okay unterscheiden willst, solltest du wie von olistudent vorgeschlagen den Exit-Status prüfen.
 
Re

Ok das probier ich mal.
Den Exit-Status hab ich ja probiert nur irgendwie funzt das nicht.

Gruß

Maruu
 
Re: Re

Maruu schrieb:
Den Exit-Status hab ich ja probiert nur irgendwie funzt das nicht.
In olistudents Zeile sind zwei kleine Tippfehler; die hast du korrigiert?
Code:
if /var/test/etherwake $ADRESSE 2>/dev/null; then echo OK; fi
sollte immer dann OK sagen, wenn etherwake erfolgreich war (Exit-Status 0).
 
Das kommt halt davon, wenn man es nicht per Copy&Paste aus dem Fenster kopiert.
Zu blöd zum abschreiben. ;-)

MfG Oliver
 
Re

Hi!

Jap jetzt geths, hab glaub auch nicht richtig drauf geschaut.
So hab jetzt mal ein Skript fertig, wenn man dies auf der FB ausführt dann kann man unter http://fritz.box/wol.html
die MAC eingeben und es geht.
Naja is ned der Brüller aber was solls.
Schauts euch mal an obs so ok is und gebt bescheid:

Code:
#!/bin/sh

#WakeOnLan installieren

ETHERWAKE=http://www.akk.org/~enrik/fbox/OLD/etherwake


#Herunterladen und installieren von etherwake
mkdir /var/wol
wget ${ETHERWAKE} -P /var/wol
chmod 755 /var/wol/etherwake

#Webserver umleiten um eigene Skripte ausführen zu können
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 

#HTML Formular für die Eingabe der MAC-Adresse erstellen
#http://fritz.box/wol.html 
echo '<html>
<body>
<form method="GET" action ="/cgi-bin/wol.cgi">          
Bitte geben Sie die MAC-Adresse des zu weckenden PC´s ein:





<input size="2" name="MAC1">:
<input size="2" name="MAC2">:
<input size="2" name="MAC3">:
<input size="2" name="MAC4">:          
<input size="2" name="MAC5">:        
<input size="2" name="MAC6"> 






<input type="submit" value="PC aufwecken">  
</form>
</body>
</html>' > html/wol.html
 
#CGI-Skript für WOL: http://fritz.box/cgi-bin/wol.cgi 
echo "#!/bin/sh
echo -e 'Content-type: text/html'
echo ''
echo '<html><body>'
ADRESSE=\`echo \${QUERY_STRING}|sed -e 's/\&/\:/g' -e 's/\=//g' -e 's/MAC.//g'\`

if /var/wol/etherwake \$ADRESSE 2>/dev/null; then 
echo 'Befehl wurde erfolgreich ausgeführt!'
else
echo 'Es gab einen Fehler beim ausführen des Befehls!

'
fi
echo '


'
echo '<a href=\"/wol.html\">Weitere Anfrage</a>'
echo '</body></html>'" > html/cgi-bin/wol.cgi

chmod +x html/cgi-bin/wol.cgi

Das ganze muss dann noch in ein Image gepackt werden und in die debug.cfg geschrieben werden.
So nun müsste man noch das Forwarding einrichten um von außen drauf zuzugreifen zu können.
Da hab ich aber keine Ahnung von, ich hab nur was gefunden das man in der ar7.cfg eine Zeile einfügt aber da hinzufinden si ein bissle blöd. Andere möglichkeit wäre was ich mir überlegt hab:

Es ist ja nicht erlaubt durch das Webinterface eine Weiterleitung auf die 192.168.178.1 zu machen mann könnte aber mit Ifconfig z.B. ein loopback device einrichten das die IP 192.168.178.2 hat und auf das dann per Webinterface umlenken.

Naja is nur so ne Idee.

MFG

Maruu
 
Öhh, so, erste klausur (von 10) überstanden, dachte ich schau mal wieder rein. Hat sich ja doll was getan hier, ich bin begeistert!

Also ich kann im Webinterface ne weiterleitung auf die zweite IP einrichten:
"Remote-Management TCP 8080 192.168.179.1 80"
lautet meine Regel und wie man sieht komme ich so über meine dyndns-adresse auf meine fritzbox, also wunderbar...

Ich kann es kaum erwarten das auf meine fritz zu packen *freu*! Nochmal ne frage, und zwar das etherwake wird ja per wget ausm netz geholt...aber könnte man das nicht mit in das Pswudo-FW-Image packen? Na da habt ihr sicher auch schon dran gedacht...
Ich bin jedenfalls begeistert und würd mich freuen das gleich mal schnell auzuprobieren :)

Vlg martian

Edit: Ich seh grad du hast ja die IP 192.168.178.1 geschrieben... Schreibfehler oder is das noch ne dritte IP der FB?

EDIT NO 2: Sehr genial! Hab das Script jetzt über telnet draufgeladen (per wget) und es manuell gestartet. Toll hast du das gemacht! Vielleicht könnte man nun noch hinzufügen, das er die MAC's speichert oder ich bau mir halt mit HTML noch eine kleine Box darunter mit meinen MAC's
Vielen Vielen Dank nochmal, und ich denke wenn wir das jetzt nochmal in ein fake-image tun kann auch jeder Anfänger das neue WOL-Feature der Fritzbox nutzen! Vielleicht spendet ein Moderator ja mal ein "Sticky" :wink:
 
So hallo erstmal.
Das mit der Weiterleitung probier ich gleich mal aus, wie gesagt da weis ich bis jetzt noch nicht all zuviel drüber was die FB sperrt und was nicht.
Zum Thema wget und etherwake. Theoretisch könnte man das schon in ein
Pseudo Image mit rein packen aber dann muss ich nach jedem neustart der Box das Image wieder neu einspielen damit WOL wieder geht.
Deswegen steht am anfang eine Variable bei der man den Pfad für etherwake setzen kann.
Grad ist das der von eriks page aber natürlich kann man sich das auch selber irgendwo hinlegen und von dort laden.
Das ganze kommt dann in die debug.cfg und muss somit nur einmal eingespielt werden und ist auch nach dem neustart noch gültig.

Gruß

Maruu
 
So, nachdem gestern eigentlich alles prima geklappt hatte, so gibt es heute ein Problem: Mein leicht angepasstes Script (im html-Bereich) lässt sich nun zwar weiterhin auf die fritzbox mittels wget übertragen, aber ich kann es nun nicht mehr ausführen! ich habe eine textdatei erstellt, den Inhalt des Scripts (siehe 2 Beiträge vor diesem) mit copy & paste eingefügt und die Datei unter dem Namen "wol" gespeichert. Dann mittels wget auf die box geholt, und mittels "chmod 755 wol" ausführbar gemacht.
Beim Aufruf des Scripts mittels "./wol" bekomme ich die Fehlermeldung "-sh: ./wol: not found" ...kann das sein? obwohl die Datei direkt im Verzeichnis liegt?
Wär nett wenn ihr mir nen kleinen Tipp geben könntet...

Vlg martian
 
Hi!

Das müsste gehen, sicher das du im gleichen ordner bist?
Benutz mal die autovervollständigung mit tab um zu verhindern das du nen Tipfehler hast.
Als alternative kannst du auch auf der Box selber ne Datei im var Verzeichnis erstellen:
cd /var
vi wol.sh
Einfügen drücken
dein Skript in Windows in die Zwischenablage kopieren
im vi Rechte Maustaste drücken
Escape drücken
:w eingeben
:q eingeben
chmod 755 wol.sh eingeben
./wol.sh sollte nun gehen

MFG

Maruu
 
prima, hat geklappt, aber auf einmal konnte ich auch wieder das mit wget-geholte script ausführen... sehr mysteriös!
Leider gibts noch ein Problem:
Wenn ich in deinem Script irgendwas verändere meckert der mich beim ausführen an, und gibt eine syntax-error in der veränderten zeile zurück =/
Ich weiss also nicht wo und wie ich meinen html-code (müssen ja nur 2 Zeilen oder so sein) einfügen soll, um meine MAC-Adresse auf der Seite anzuzeigen.
Naja, ist nur ein kleiner Schönheitsfehler.
Auf gehts zur nächsten Klausur heute :shock:
 
Hi!
Ähhm theoretisch dürfte er nicht meckern, poste am besten mal deinen Code.
Ich mach keine Checksum oder so, es is an der stelle ganz normaler HTML-Code also einfach ein

MAC-Adresse

einfügen das müsste reichen.

Gruß

Maruu

PS: Viel Glück für die Prüfungen
 
Er meckert "./var/wol/wol.sh: ZEILE: Syntax error: newline unexpected"
Davor steht noch das er den Ordner html.* nicht verschieben kann, weil er nicht leer ist. Aber ich kann den ja nicht jedesmal von Hand löschen =/
Hier der auszug aus dem code:
Code:
.
.
.
Bitte geben Sie die MAC-Adresse des zu weckenden PC´s ein:





MAC: 00-00-00-00-00-00





.
.
.

hmm, und könnte man nicht direkt default-werte für mac1-6 schreiben, also meine macadresse? dann brauch ich die nicht einzutragen... weiss aber nicht wie ich bei cgi das definiere, also z.b. "MAC1=00" usw...)
Ach ja, und was muss jetzt noch in dieser default-datei stehen, damit das script automatisch gestartet wird? könnte man das nicht man mittels fake-FW-update patchen?

Nun muss ich aber wirklich weg vom PC, sonst wird das nix mit der Mechanik-Klausur ^^
 
Hi!

Du kannst mittels <input size="2" name="MAC1" value="FF">
sstandartwerte festlegen, also immer mit value den entsprechenden
Teil der MAC angeben, das wird dann schon standartmäßig angezeigt.
Das ganze in ein default FW-Image ach ich noch dauert aber noch ein
bisschen muss grad noch ein paar andere Sachen machen.

MFG

Maruu
 
Soo, nachdem ich nun alle Klausuren hinter mich gebracht habe, ist es wieder Zeit ein bisschen mit der Fritzbox zu spielen...
Also, das Skript scheint ja nun ausgereift, nur leider muss es nach jedem Neustart der Box ja erneut eingespielt werden. Mein Wunsch wäre es also, das einspielen nach einem Neustart zu automatisieren, bzw das Skript (+etherwake) im Flash-Speicher der Box zu speichern, so dass das nicht verloren geht wie im RAM.
Habt ihr Vorschläge wie das am saubersten implementiert wird!?
Oder soll ich einfach die notwendigen Befehle in die debug.cfg schreiben?

Vlg martian
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.