[Gelöst] Gelöst Wake on Call / FB 7390 / FW FRITZ!OS 05.22

viewer1974

Neuer User
Mitglied seit
7 Jul 2007
Beiträge
153
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

ich habe folgendes Problem und komme einfach nicht weiter.

Ich habe folgendes in der debug.cfg eingetragen (Editor Notepad++) Debug.cfg gab es vorher nicht und somit erstellt. Im Unix Fortmat gespeichert und auch und im Falsh Verzeichnis gespeichert.
Etherwake funktioniert wenn ich per Telnet auf der Box bin. Sonst ist die Box "nicht" modifiziert.

Hat jemand vron euch evtl, eine Idee. Ich suche nämlich eine Lösung, um meinen Server aufzuwecken im internen Lan. Habe einen Medienserver auf dem Server den ich aber nur bei Bedarf hochfahre.

habe mich schon durch die diversen Threads gehangelt aber irgendwie bekomme ich das nicht ans rennen.

Bin für jede Hilfe Dankbar


Code:
cd /var/tmp
# bitte eigenen Server eintragen
wget http://www.tecchannel.de/download/432967/etherwake
chmod +x ./etherwake
 
######################
# wake-on-call START #
######################
 
########################
### --- Configuration Wake on Call
 
 
########################
### --- calllog erstellen
cat > /var/flash/calllog << 'END'
#!/bin/sh
 
# MAC Adresse fuer das Wecken eines PC
wolmac="XX:XX:XX:XX:XX:XX"
 
# NIC für das senden des WoL-Packages (nicht getestet, da ich noch eine "alte" Box habe...)
nic="eth0"
 
# Kommando zum wecken des PC's
startpc="/var/tmp/etherwake -i $nic $wolmac"
 
# Wenn ein Anruf auf diesem SIP Port erfolgt, dann soll er meinen Rechner starten
# SIP Port Nummer gibts hier: FBF Web-Interface öffnen / Telefonie / Internettelefonie
# Achtung: SIP-Nummer ist eins kleiner als der Wert unter "Auswahl", zumindest bei mir.
# Beispiel: *124# ist dann z.B. SIP3 (!)
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip="SIP2"
 
# Wer darf den PC per WOL über Tel aufwecken?
# jeder      Jeder der die Nummer $wolsip anruft, darf den Rechner aufwecken
# TelNummer  Wenn es nur eine bestimmte Tel-Nummer darf
woltel="jeder"
 
# $wolsip und $woltel lassen sich im $logfile kontrollieren
# Denn manchmal wird die Nummer nicht so übermittelt 0123... sondern so +49123...
# Bitte kontrollieren und entsprechend hier eintragen
 
localdir="/var/tmp"
logfile="/var/tmp/woc.log"
 
# Pruefen ob die angerufende Nr die WOL-SIP ist
if [ "$3" = "$wolsip" ]; then
 # Prüfen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken
 if [ "$woltel" = "jeder" ]; then
   $startpc
   statuscode="OK:EVERYONE_ALLOWED"
 else
   # Dann darf es wohl nur eine bestimmte Nummer
   # Prüfen ob es die bestimmte Nummer ist
   if [ "$1" = "$woltel" ]; then
     $startpc
     statuscode="OK:ALLOWED_USER"
   else
     statuscode="FAIL:INTRUDER"
   fi
 fi
else
 statuscode="INFO:NO_WOC"
fi
# Im Produktiv-Einsatz auskommentieren:
echo "$1 ($woltel),$2,$3 ($wolsip),$4,$5,$statuscode" >>$logfile
 
END
# wake-on-lan.sh fertig
######################
 
chmod +x /var/flash/calllog
 
#####################
# wake-on-call ENDE #
#####################
 
Zuletzt bearbeitet:
Moinsens
Hab dass auch mal gemacht, meine Skriptlösung dafür:
/var/calllog
PHP:
#! /bin/sh
# Welche Nummer erlaubt es irgendetwas auf der Fritz!Box zu tun?
allowed="0123456789" # Funk/Fernsprechnummer (Anrufer)
allowed_from="9876543210" # Festnetz oder MSN Nummer (angerufene Nummer)
allowed_line="ISDN" # Line: "ISDN" oder "SIP0-X"?

check_call () {
if [ "$1$2$3" = "$allowed$allowed_from$allowed_line" ]
then
return 0
fi
return 1
}

echo "`date +\"%d.%m.%y %H:%M\"` - Anruf von $1 auf Leitung $2 ($3) $4"
check_call $1 $2 $3 $4

if [ "$?" = "0" ]
then
echo "Yes, you can!"
else
echo "No, you cant!"
fi

Hier checkt eine Funktion, anhand ihres Returncodes wird dann entschieden ob und wie was gemacht wird.
Auch hier empfiehlt es sich, per telnet eingeloggt, sich mal anzurufen um zu sehen wie die Nummern reinkommen und welche Parameter übergeben werden.

Eins noch: Meines Wissens sollte das Skript als /var/calllog, nicht /var/flash/calllog von /var/flash/calllog (die keinen Inhalt, aber mit echo "" > /var/flash/calllog erzeugt werden sollte) ausgeführt werden.
 
Zuletzt bearbeitet:
... aber mit echo "" > /var/flash/calllog erzeugt werden sollte) ausgeführt werden.

ja das verstehe ich auch. Aber ich verstehe nicht was ich falsch mache.

Kannst Du Dir mein Script mal anschauen. Was falsch sein könnte. Oder muß ich dass noch woanders eintragen als in der debug.cfg.
 
Mach ich, später, weil noch auf Arbeit.
Das wird....
 
Super... Danke..
 
Die hohe Kunst des maskierens!

Erster Zwischenbericht:

SHEBANG (#! /bin/sh) reingemacht, weil ich drauf steh ;)
Habs dann erstmal nach /var/calllog korrigiert und mal ausgeführt.
Hab mir aber im Vorfeld schon gedacht,
dass für den cat > /var/calllog die $ für den weiteren Gebrauch in /var/calllog,
maskiert werden müssen.

Ich zeig dir mal was nach dem cat > /var/calllog da drinne steht:
Dann siehste, dass das nicht funktionieren kann.
Code:
#!/bin/sh
.....
            # Pruefen ob die angerufende Nr die WOL-SIP ist
            if [ "" = "" ]; then
             # Prüfen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken
              if [ "" = "jeder" ]; then

                    statuscode="OK:EVERYONE_ALLOWED"
                     else
                        # Dann darf es wohl nur eine bestimmte Nummer
                           # Prüfen ob es die bestimmte Nummer ist
                              if [ "" = "" ]; then

                                        statuscode="OK:ALLOWED_USER"
                                           else
                                                statuscode="FAIL:INTRUDER"
                                                   fi
                                                    fi
                                                    else
.........
Siehste was ich meine? Überall wo der $VARIABLENNAME stehen sollte steht nur "".
Deswegen muss beim cat das "Sonderzeichen" $ mit einem Backslash maskiert werden.
Also so mein ich dass:
\$VARIABLENNAME
...überall wo in der cat-Sequenz das Dollarzeichen auftaucht.
Probier dass mal alleine, wenn du es nicht hinkriegst helfe ich dir dann dabei.

???

Kleiner Ansporn gefällig?
Biddeschön:
/var/tmp/woc.log
Code:
XXXXXXXX27 (jeder),XXXXXXXX15,SIP0#XXXXXXXX15 (SIP2),,koy,INFO:NO_WOC

...und nocheinen:
Code:
XXXXXXXX27 (XXXXXXXX27),XXXXXXXX15,SIP0#XXXXXXXX15 (SIP0#XXXXXXXX15),,koy,OK:ALLOWED_USER
SIP0 musst ich auf SIP0#XXXXXXXX15 ändern damits klappt.
 
Zuletzt bearbeitet:
Ja, das sollte mir für das erste helfen.

Werde wohl erst morgen Abend dazu kommen, da ich Unterwegs bin, mir es aber die ganze Zeit Kopfzerbrechen macht ;-)

Werde berichten.

Schon mal Danke
 
Kein Ding, am End gehts dann ja wieder, kleinere Anpassungen vorausgesetzt.
etherwake heisst bei mir zB ether-wake, aber dann ging er endlich an ;)
 
Kein Ding, am End gehts dann ja wieder, kleinere Anpassungen vorausgesetzt.
etherwake heisst bei mir zB ether-wake, aber dann ging er endlich an ;)


mit etherwake habe ich auch schon festgestellt, das ich das nicht herunterladen muß und ether-wake nutzen kann.
Ich hoffe ich komme heute Abend dazu. Bin schon mächtig gespannt und werde berichten.

Sonst muß ich nichts beachten, oder? Also einfach in die debug.cfg rein bubbeln und box neu starten oder ?
Sorry für die vielen Fragen. Taste mich gerade an die Geschichte ran und bin auch noch nicht so Linux fit :-(
 
Moin Moin

Oder?
Das kann ich erst sagen, wenn du auf Schwierigkeiten stößt.
Grundsätzlich falsch find ich, das Skript in /var/flash/calllog zu prügeln.
Obwohl dass auch funktioniert. Also scheint es egal zu sein, ich bevorzuge trotzdem /var/calllog.
Ausführbar musst du es auch nicht machen, da es ungefähr so gestartet wird: /bin/sh /var/calllog $1 $2 $3 $4
Wenn du auch ether-wake auf der Box hast, kannste das wget auskommentieren und die Variable anpassen: startpc="/usr/sbin/ether-wake -i $nic $wolmac"
Aber das wichtigste bleibt: Alle Dollarzeichen in der cat-Sequenz mit Backslash maskieren! \$
 
Zuletzt bearbeitet:



Hast ja recht. Ich versuche ersteinmal das geschriebene umzusetzen und zu testen und werde mich melden.

Mir war nur nicht 100% klar. ob ich "nur" den Quelltxt in der debug.cfg eintragen muß oder noch etwas anderes berücksichtigen muß, damit das "Skript" auch aufgerufen und abgearbeitet wird.
 
Wenn du ein Android Smartphone hast, kannst du auch BoxToGo nutzen. Damit kann ich durch ein Widget auf dem Homescreen mit einem Druck meinen Rechner starten. Egal ob aus dem LAN oder aus dem Internet.

LG Joe
 
Ja, so ein €600 Smartfon mit BoxToGo wär schon toll.
Dann müsst ich mir nicht immer die alten Sachen schenken lassen, oder selber Skripten.
Das App kriegste für €4 fast geschenkt, wenn du dir überlegst was das alles kann.
Und Android läuft auf nem Linux, nurnoch rooten und ab geht er, der Peter.

BoxToGo:
Computer aufwecken (WakeOnLAN)

Anzeige aller an die FRITZ!Box angeschlossenen Computer
Eingabe selbstdefinierter Computer mit ihrer MAC-Adresse
Starten der Computer aus der Ferne
Anzeige, welche Computer bereits gestartet sind
Filterung nach Ein- oder ausgeschaltet, LAN oder WLAN
 
Zuletzt bearbeitet:
Moin moin,

so dann melde ich mich auch mal wieder. Hatte gestern nicht so viel Zeit, habe mich aber daran versucht. Ich glaub ich bin irgendwie zu bl.d. Ist doch eigentlich nicht schwer, aber es funktioniert nicht so wie es soll.

Ersteinmal zum Smartphone:
Ja, hab eins und auch eine App und WOL funktioniert super. Meine Frau hat aber noch kein Smartphone und von daher hab ich ersteinmal nach einer Lösung mit WOC gesucht.

So nun zu meinen Ergebnissen:
Ether-Wake funktioniert wenn ich manuell die Werte angebe. Aber, und das wundert mich, dass es nicht mitz usr/.... startet sondern nur Ether-wake -i ...
Denn eigentlich sollten meine und Deine Boxen(Koyaanisqatsi) von der Firmaware keine großen änderungen haben außer, dass Du freetz auf der BOX hast.

So nun aber weiter:
Ich habe nichts in die debug.cfg gepackt sonder ersteinmal mit nem Cat die calllog gefüllt. Eigenartiger Weise funktioniert das maskieren nicht. :confused: Wenn ich mitz \$ maskiere steht in der var/calllog
auch das \$ mit drin. Mache ich einen cat ohne \ dann steht alles so wie es soll in der calllog drin.

Ausführen lässt calllog sich auch. Allerdings nicht mit dem gewünschten Effekt. Die WOC.log wird geschrieben aber und das hab ich jetzt vergessen (ich sitze jetzt leider nicht mehr zu Hause) irgendwas mit (jeder),,, Viele Komma etc und

INFO:NO_WOC...

als Sip habe ich SIP0#621 eingetragen weil es so auf der Box aussieht.

Rufnummer 621 Vorauswahl: *121# also SIp0


also funktioniert die Umsetzung noch nicht richtig. Hab das startpc mal an eine andere Stelle kopiert. Startet der Rechner wenn ich calllog ausführe. Ich hab noch mal ne Frage bzgl ausführen. Wird die calllog eigentlich irgendwie in einer Schleife ausgeführt oder woran wird der Anruf erkannt? Oder stehe ich jetzt tatsächlich auf dem Schlauch.

Genauere Ergebnisse werde ich hoffe ich heute Abend posten können. Eigentlich ja kein Hexenwewrk.

Die calllog habe ich übrigens so geschrieben.
cat > /var/calllog << 'END'

Dann....
#!/bin/sh
...
END

Enter.... und per cat /var/calllog überprüft.
 
Zuletzt bearbeitet:
Moinsen
Nun, Variationen, von Box zu Box, wirds wohl immer geben.
Das mit dem maskieren wundert mich, eventuell doch mal die cat-Sequenz in die debug.cfg einbauen.
Aber mach das mit: nvi /var/flash/debug.cfg
Denn ein cat'en der cat-Sequenz in die debug.cfg entfernt die Backslashs wieder.
Die dann mit: /bin/sh /var/flash/debug.cfg ausführen.
Oder die debug.cfg in /var/tmp erstellen mit vi editieren und anschliessend mit /bin/sh /var/tmp/debug.cfg ausführen.

Hier jetzt mein "working example".
So funktioniert es bei mir (Kommentare entfernt):
PHP:
cat > /var/calllog << END
#!/bin/sh
wolmac="XX:XX:XX:8B:6C:24"
nic="eth0"
startpc="ether-wake -i \$nic \$wolmac"
wolsip="SIP1#09876543210"
woltel="1234567890"
localdir="/var/media/ftp/uStor01"
logfile="/var/media/ftp/uStor01/woc.log"

if [ "\$3" = "\$wolsip" ]; then
 if [ "\$woltel" = "jeder" ]; then
   \$startpc
   statuscode="OK:EVERYONE_ALLOWED"
 else
   if [ "\$1" = "\$woltel" ]; then
     \$startpc
     statuscode="OK:ALLOWED_USER"
   else
     statuscode="FAIL:INTRUDER"
   fi
 fi
else
statuscode="INFO:NO_WOC"
fi
echo "\$1 (\$woltel),\$2,\$3 (\$wolsip),\$4,\$5,\$statuscode" >>\$logfile
END

Oups, da fällt mir ein, dass nvi ja ein Wrapper-skript ist und am End auch ein cat macht.
Hm, bin mir jetzt garnicht mehr sicher ob dass dann überhaupt mit nvi geht.
Ich check das mal....
...OK, nvi speichert mit maskierung ab, also keine Fehlerquelle.
 
Zuletzt bearbeitet:
Hi,

so es funnzt. Es ging vorher auch schon nur habe ich die zu modifizierende Box hinter einer anderen Box und mit der "internen" Nummer wird er Aufruf der Calllog nicht gestartet. Man was hab ich bl.d geschaut. Habe von außen angerufen und es geht.

Habe die debug.cfg jetzt auch noch modifiziert, so dass auch noch ein Systemlog geschrieben wird und jut ist.

Danke noch einmal.

Wünsche noch einen schönen Abend
 
Ebenso
Bitte dann 1. Post auf Gelöst setzen (Bearbeiten --> Erweitert --> Titel Präfix)
 
Schön zu sehen, dass /var/calllog an sich noch funktioniert, allerdings wird auf meiner (gefreetzen) 7390 weder /var/calllog noch /var/flash/calllog ausgeführt... Meine Anrufe werden grundsätzlich von der Fritz.Box entgegengenommen (sind auch in der Anruferliste enthalten), doch zeigt das calllog-Skript nicht, ob der Anrufer berechtigt oder unberechtigt ist... Sowohl /var/flash/calllog als auch /var/calllog haben die Rechte '777', sind also ausführbar. Sind andere Gründe bekannt, warum /var/calllog nicht ausgeführt werden könnte?
 
Moinsen
Das ist meine 7360 übrigens auch (gefreetzt).
Weder /var/calllog noch /var/flash/callllog müssen ausführbar gemacht werden.
crw-r--r-- 1 root root 240, 141 Jan 1 1970 /var/flash/calllog
-rw-r--r-- 1 root root 553 May 30 08:42 /var/calllog
Sie werden so aufgerufen, dass sie das machen was in ihnen steht, ala: /bin/sh /var/calllog arg1 arg2 arg3 usw.
Noch nicht mal ein SHEBANG ( #! /bin/sh ) ist nötig,
ich machs nur rein weils korrekter ist und sie dann auch anders gestartet werden können.
Ich sehe den Knackpunkt eher in /var/flash/calllog.
Guck die dir mal genau an, bei mir sieht die so aus:
crw-r--r-- 1 root root 240, 141 Jan 1 1970 /var/flash/calllog
^---> Ein sogenanntes "Character Device", also sowas wie die Dateien die du in /dev rumliegen hast.
Bloss dass da auch "Block Devices" rumliegen.
Ein Zeichenorientiertes Gerät (klasse Wort), kannste dir so vorstellen wie ein Link auf irgendwas.
In diesem Fall zu einem freien beschreibbarer Bereich im Flashspeicher.
Wo der genau ist, wird durch die Major und Minor Nummer bestimmt.
Bei obigen Beispiel ist das: Major = 240 und Minor = 141
Bei mir war zwar /var/flash/calllog vorhanden, aber mit "cat /var/flash/calllog" gabs nur eine Fehlermeldung.
Erst nach einem "echo "" > /var/flash/calllog" war sie "scharf" und sowohl sie als auch /var/calllog wurde ausgeführt, wenn vorhanden.
Prüfe also ob /var/flash/calllog ein Character Device ist mit seine Major und Minor Nummer, die stimmen müssen.
Falls es nur eine Textdatei ist,
hast du sie irgendwie zerschossen,
ich weiss nicht ob sie dann automatisch neu erstellt wird (beim reboot zB.),
oder ob sie manuell mit mknod erzeugt werden muss.

Deswegen sollen solche Zeichenorientierten Geräte nicht direkt mit vi (überschreibt sie als Textdatei),
sondern mit dessen extra dafür geskripteten Wrapper nvi editiert werden (erzeugt temporäre Datei und cat'et sie beim abspeichern in die original Datei).
 
Zuletzt bearbeitet:
Vielen Dank für die Antwort, leider ist das nicht die Lösung. Ich habe die Rechte von /var/flash/calllog angepasst und sie mit 'echo "" > calllog' auch entsprechend geleert bzw. aktiviert, aber Anrufe werden trotzdem nicht gemeldet. Es scheint sich auch um das richtige character device zu handeln:
Code:
root@fbox:/var/flash# ls -la calllog
crw-r--r--    1 root     root      250, 141 Jan  1  1970 calllog
Der Major von 250 scheint bei einer 7390 auch zutreffend zu sein. Ich habe eher das Gefühl, dass der Telefon-Daemon gar keine Parameter mehr übergibt...
 
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.