Anrufliste mit FritzBox und dbox2

geg

Neuer User
Mitglied seit
6 Aug 2006
Beiträge
33
Punkte für Reaktionen
0
Punkte
0
Hallo,

hat schon mal jemand eine Anrufliste zur Anzeige in der dbox2 realisiert? Habe hier mal einen Vorschlag, den ich gestern auf die schnelle mal erstellt habe.
 
Zuletzt bearbeitet:
Anleitung zur Anzeige einer Anruferliste mittels der dbox2 über die FritzBox!

Voraussetzungen:

- Telnet-Zugang zur fritzBox die VOIP unterstützt.
- Installiertes callmessage.sh auf der FitzBox.
- Dbox2 mit installiertem neutrino Linux.

Anpassungen auf der FritzBox:

- Kopieren der dbug.cfg in das tmp-Verzeichnis

# cat /var/flash/debug.cfg > /var/tmp/debug.txt

- Erweiterung der Datei /var/tmp/debug.txt

# vi /var/tmp/debug.txt

Vor dem ENDCALLMESSAGE folgende Zeilen einfügen...
Code:
# write log
if [ "${name}" = "${caller}" ]
then
  name="unbekannt"
fi
date +"%d.%m.%y %H:%M:%S                               Leitung: ${theline}\\nName: ${name}\\nNummer: ${caller}" > /var/tmp/anrufliste.tmp
echo "-----------------------------------------------------------------" >> /var/tmp/anrufliste.tmp
sed  '100,$d' /var/tmp/anrufliste.txt >> /var/tmp/anrufliste.tmp
mv /var/tmp/anrufliste.tmp /var/tmp/anrufliste.txt


[COLOR="Silver"]sleep 3
killall wget
ENDCALLMESSAGE[/COLOR]

und am Ende der Datei diese Zeilen anfügen. Das [Provider ID] ist durch den, in der Box verwendeten Provider zu ersetzen (z.B. "1und1").

Code:
# write anrufliste script to file
mkdir /var/tmp/cgi-bin
cp /usr/www/[COLOR="Red"][PROVIDER-ID][/COLOR]/cgi-bin/???* /var/tmp/cgi-bin
mount -o bind /var/tmp/cgi-bin /usr/www/[COLOR="Red"][PROVIDER-ID][/COLOR]/cgi-bin
# write cmd script to file
cat > /var/tmp/cgi-bin/cmd << 'ENDCMD'
#!/bin/sh
echo -e "Content-type: text/html; charset=iso-8859-1\n"
echo -e "<html><body>"
case $1
in
  uptime)
    run_clock
    uptime;;
  anrufe)
    cat /var/tmp/anrufliste.txt;;
  reboot)
    echo "Die FritzBox! wird jetzt neu gestartet..."
    echo -e "</body></html>"
    /sbin/reboot;;
  *)
    echo "Unbekannter Parameter";;
esac
echo -e "</body></html>"

ENDCMD

# make it executable
chmod 777 /var/tmp/cgi-bin/???*

- Modifizierte debug.txt Datei zurückschreiben.

# cat /var/tmp/debug.txt > /var/flash/debug.cfg

- FritzBox neu starten

# reboot

Anpassungen auf der DBOX:

- In dem Verzeichnis /var/tuxbox/plugins die Dateien fbaunrufliste.cfg und fbanrufliste.sh erstellen.

# vi /var/tuxbox/plugins/fbanrufliste.cfg

Code:
type=3
name=FritzBox! Anrufliste
desc=Liste der letzten 50 Anrufer
needfb=0
needrc=0
needvtxtpid=0
needoffsets=0

# vi /var/tuxbox/plugins/fbanrufliste.sh

Code:
#!/bin/sh
PATH=/var/bin:/sbin:/bin
wget -q -O /tmp/wget.out http://fritz.box/cgi-bin/cmd?anrufe
echo "--------------------- FritzBox! Anrufliste ---------------------"
if [ "`cat /tmp/wget.out  | grep cat:`" != "" ];then
  echo "Die Anrufliste ist leer!"
else
  echo -e "`cat /tmp/wget.out  | grep -v html`"
fi
rm /tmp/wget.out

- Die Rechte auf die Datei /var/tuxbox/plugins/fbanrufliste.sh setzen

# chmod 755 /var/tuxbox/plugins/fbanrufliste.sh

- Neustart der dbox2

# reboot

Unter dem Menüpunkt "Skripte" auf der dbox2 sollte nun die Anrufliste abrufbar sein (sofern einer angerufen hat! :rolleyes: ).


Das ganze ist natürlich ohne Gewähr! Wer seine FritzBox zerstört ist selber schuld ... :beerdigu:
 
Zuletzt bearbeitet:
UEning schrieb:

Naja... ist doch schon etwas anderes! Mit meinem MOD wird auf der FritzBox ein eigenes LOG, mit den letzten 50 Anrufen (Datum/Uhrzeit/Name), geschrieben. Dieses Log kann dann von der dbox abgerufen und angezeigt werden. Die dbox muss auch nicht permanent dafür laufen... Ist sehr gut, um zu sehen, welche Anrufe man verpasst hat!
 
Also diese Lösung halte ich für besser.
Immerhin muss die dbox nicht laufen. Es wird doch jetz aber wieder ein Log auf der FB erstellt. Kann nicht auf die Anrufliste die schon in der FB ist zugegriffen werden bzw diese auf der dBox anzeigen lassen?

Leider bin ich mit Telnet noch garnicht vertraut und muss noch mit dem Testen warten :-/
 
_thomas_ schrieb:
Es wird doch jetz aber wieder ein Log auf der FB erstellt. Kann nicht auf die Anrufliste die schon in der FB ist zugegriffen werden bzw diese auf der dBox anzeigen lassen?

Habe ich noch nicht geprüft muss ich zugeben! Die Lsite in der FB hat allerdings keine aufgelösten Namen und beinhaltet nur die Nummern und Uhrzeiten bzw. Namen aus dem internen Telefonbuch (soweit ich mich erinnere). Der Vorteil dieser Liste währe allerdings, dass auch die ausgehenden Anrufe dort verzeichnet sind... werde ich mir auf jeden Fall noch mal anschauen!
 
Läuft das Ding bei dir so? Hats noch werd getestet?
 
_thomas_ schrieb:
Läuft das Ding bei dir so? Hats noch werd getestet?
Bisher läuft es bei mir und meinem Bruder problemlos... Würde mich freuen, wenn noch wer es testen könnte oder sogar schon getestet hat. Evtl. ist meine Anleitung ja auch nicht komplett oder verständlich genug (was ich natürlich nicht hoffe!)

cu
 
so. wäre das so richtig eingefügt? (das fette ist reinkopiert)
zumindest hab ich das so verstanden.
möchte jetz nur nochmal auf nummer sicher gehen bevor ich weitermache.
rot ist mein provider.
wozu soll der eigentlich gut sein?? also die angabe zum provider.


hier die debug.cfg:



#!/bin/sh

# start telnet deamon with password of web gui
/usr/sbin/telnetd -l /sbin/ar7login

# set hostname to fritz.box
hostname fritz.box

major=`grep tffs /proc/devices`
tffs_major=${major%%tffs}
#write calllog
cat > /var/calllog << 'ENDCALLLOG'
#!/bin/sh

CALLER=${1}
LINE=${3}
if [ -z "${LINE}" ]
then
LINE=${2}
fi
if [ "${LINE}" = "ISDN" ]
then
LINE=${2}
fi
if [ -z "${LINE}" ]
then
LINE=${1}
CALLER=""
fi

sh /var/tmp/parse_telefon.sh "${LINE}" "${CALLER}" &

ENDCALLLOG

# save /var/calllog
mknod /var/flash/calllog c $tffs_major $((0x77))
cp /var/calllog /var/flash/calllog

#CONTACTS
#contact=:anonym;
#contact=0123456:Ich selber;
#contact=0123456:Meine zweite Nummer;
#CONTACTSEND

#LINES
#line=:anonym;
#line=12345:1;
#line=12345:2;
#line=12345:Fax;
#LINESEND

# write send script to file
cat > /var/tmp/callmessage.sh << 'ENDCALLMESSAGE'
#!/bin/sh

caller=${2}
called=${1}

# search name in contact list
name=`cat /var/flash/debug.cfg 2>/dev/null | fgrep "#contact=${caller}:" | sed "s/#contact=${caller}://"`
name=${name%%\;*}

# name not found?
if [ -z "${name}" ]
then
name=${caller}
fi
httpname=`echo "${name}" | sed -e '{s/ /%20/g;s/?/Ae/g;s/÷/Oe/g;s/?/Ue/g;s/?/ae/g;s/?/oe/g;s/?/ue/g;s/?/ss/g;s/&/%26/g;}'`

# search line in line list
theline=`cat /var/flash/debug.cfg 2>/dev/null | fgrep "#line=${called}:" | sed "s/#line=${called}://"`
theline=${theline%%\;*}

# line not found?
if [ -z "${theline}" ]
then
theline=${called}
fi
httptheline=`echo "${theline}" | sed -e '{s/ /%20/g;s/?/Ae/g;s/÷/Oe/g;s/?/Ue/g;s/?/ae/g;s/?/oe/g;s/?/ue/g;s/?/ss/g;s/&/%26/g;}'`

# send information to DBoxes -> TV screen
wget -O /dev/null "http://root:[email protected]/control/message?nmsg=Eingehender%20Anruf%0AAnrufer%3A%20${httpname}%0ALeitung%3A%20${httptheline}" >/dev/null 2>&1 &

# write log
date +"%d.%m.%y %H:%M:%S | ${caller} ${name}" > /var/tmp/anrufliste.tmp
sed '50,10d' /var/tmp/anrufliste.txt >> /var/tmp/anrufliste.tmp
mv /var/tmp/anrufliste.tmp /var/tmp/anrufliste.txt


sleep 3
killall wget
ENDCALLMESSAGE

# make it executable
chmod +x /var/tmp/callmessage.sh

# write dummy WakeOnCall script
echo "#!/bin/sh" > /var/tmp/woc.sh
make it executable
chmod +x /var/tmp/woc.sh

# write parse_telefon script to file
cat > /var/tmp/parse_telefon.sh << 'ENDPARSETEL'
#!/bin/sh

trap "" SIGCHLD

prefix=1234
caller="$2"
called="$1"

# normalize caller
case ${caller} in
0049*)
caller=0${caller#*0049}
;;
49????????*)
caller=0${caller#*49}
;;
[1-9]????????*)
caller=0${caller}
;;
[1-9]*)
caller=${prefix}${caller}
;;
esac

# exec woc.sh
/var/tmp/woc.sh ${called} ${caller} &
# exec callmessage.sh
/var/tmp/callmessage.sh ${called} ${caller} &

# write anrufliste script to file
mkdir /var/tmp/cgi-bin
cp /usr/www/Arcor/cgi-bin/???* /var/tmp/cgi-bin
mount -o bind /var/tmp/cgi-bin /usr/www/Arcor/cgi-bin
# write anrufliste script to file
cat > /var/tmp/cgi-bin/anrufliste << 'ENDANRUFLISTE'
#!/bin/sh
echo -e "Content-type: text/html; charset=iso-8859-1\n"
echo -e "<html><body>"
echo -e "`cat /var/tmp/anrufliste.txt`"
echo -e "</body></html>"


ENDPARSETEL

# make it executable
chmod +x /var/tmp/parse_telefon.sh
 
Hi,

der 1. Teil sieht soweit gut aus... der untere Bereich muss ausserhalb des ENDPARSTEL und chmod. So wie du es jetzt eingebunden hast, würde es ein Bestanteil des PARSTEL Skriptes und würde jedes mal beim Aufruf des Skriptes /var/tmp/parse_telefon.sh ausgeführt. Ebenso darfst Du das Ende nicht vergessen (ENDANRUFLISTE) und das chmod, damit das Skript "anrufliste" auch ausgeführt werden kann.

Also am besten:

Code:
# exec woc.sh
/var/tmp/woc.sh ${called} ${caller} &
# exec callmessage.sh
/var/tmp/callmessage.sh ${called} ${caller} &

ENDPARSETEL

# make it executable
chmod +x /var/tmp/parse_telefon.sh

[B]# write anrufliste script to file
mkdir /var/tmp/cgi-bin
cp /usr/www/Arcor/cgi-bin/???* /var/tmp/cgi-bin
mount -o bind /var/tmp/cgi-bin /usr/www/Arcor/cgi-bin
# write anrufliste script to file
cat > /var/tmp/cgi-bin/anrufliste << 'ENDANRUFLISTE'
#!/bin/sh
echo -e "Content-type: text/html; charset=iso-8859-1\n"
echo -e "<html><body>"
echo -e "`cat /var/tmp/anrufliste.txt`"
echo -e "</body></html>"

ENDANRUFLISTE

# make it executable
chmod 777 /var/tmp/cgi-bin/???*[/B]

Wenn alles ok ist, und die Box neu gestartet wurde, sollte nach einem Anruf die Datei /var/tmp/anrufliste.txt vorhanden sein!

Das mit dem Provider ist wohl nötig, weil dieses Verzeichnis für die cgi-skripte verwendet wird. Ich habe noch nicht geprüft, ob das auch mit dem allgemeinen cgi-Verzeichnis unter /usr/www/cgi-bin funktioniert. Werde ich aber noch machen, dann kann das ganze etwas allgemeiner gehalten werden.

cu

GEG
 
Ok. jetzt machts auch mehr sinn.

geklappt hat es bis jetzt soweit. bis auf das abrufen von der dbox aus.
geh ich auf >skripte>anrufliste , dann kommt nix rüber. die anrufliste.txt ist aber auf der FB vorhanden. rechte sind auch auf 755 für die anrufliste.sh gesetzt.

hinter der anrufliste kommt nichts? (rot markiert)

#!/bin/sh
PATH=/var/bin:/sbin:/bin
wget -q -O /tmp/anrufliste.txt http://192.168.2.5/cgi-bin/anrufliste???
cat /tmp/anrufliste.txt | grep -v html
 
hmm ... von der dbox gehts nicht? Dann prüf doch mal, ob du den Link http://192.168.2.5/cgi-bin/anrufliste über einen Webbrowser abrufen kannst. Wenn nicht, kann es nur noch an dem mount liegen. Dann ist das /usr/www/Arcor nicht dein cgi-bin Verzeichnis. Habe mal gerade geschaut und gesehen dass das Verzeichnis bei mir kleingeschrieben ist. Ändere das doch mal in deinem debug.cfg in /usr/www/arcor um und starte die FB noch mal! Bei UNIX muss gross/kleinschreibung beachtet werden!
 
der browser sagt mir.

ERR_NOT_FOUND
AR7 Webserver Wed, 09 Aug 2006 11:49:03 GMT


das häckelchen(was auch immer das sein soll) vor und nach den >"< steht bei mir nicht. zumindest ist da leer.
"`cat /var/tmp/anrufliste.txt`"


häng da jetz voll fest.
 
werd heute Abend mal in ruhe schauen .... bin noch auf der Arbeit! Melde mich dann.

cu
 
nachtrag:
http://192.168.2.5/cgi-bin/system_status , firmwarecfg und webcm kann ich so per browser erreichen. nur die anrufliste nicht.

danke fürs mitgucken. so wie ich es wieder kenn ist es nur wieder eine "kleinigkeit"

bis denn
 
fehler ist gefunden.
anstatt der provider ID wie erst gesagt:
(Das [Provider ID] ist durch den, in der Box verwendeten Provider zu ersetzen (z.B. "1und1").)

# write anrufliste script to file
mkdir /var/tmp/cgi-bin
cp /usr/www/[Provider ID]/cgi-bin/???* /var/tmp/cgi-bin
mount -o bind /var/tmp/cgi-bin /usr/www/[Provider ID]/cgi-bin
# write anrufliste script to file
cat > /var/tmp/cgi-bin/anrufliste << 'ENDANRUFLISTE'
#!/bin/sh
echo -e "Content-type: text/html; charset=iso-8859-1\n"
echo -e "<html><body>"
echo -e "`cat /var/tmp/anrufliste.txt`"
echo -e "</body></html>"

ENDANRUFLISTE

# make it executable
chmod 777 /var/tmp/cgi-bin/???*


muss das eingetragen werden was unter http://[Fritzbox-IP]/cgi-bin/system_status steht. und zwar hinten am ende nach dem bindestrich. zb :aol, gmx , 1und1 ....
ist doch das branding der box, oder?
beispiel:
FRITZ!Box Fon (AOL)-B-xxxxx-12345-1023450-123456-123456-123456-1234-aol

in den internetverbindungen ist arcor eingestellt. wird arcor eingegeben gehts dann nicht.

mir ist der unterschied zwar aufgefallen, habs aber geistig nicht aufgenommen.

DANKE Tobi fürs drauf kommen ;)

.......................................................................

was anderes noch.
eine zeile für die ausgabe ist etwas arg kurz.
datum, nummer und name. wobei dann das letzte in der auflistung nicht ganz angezeigt wird.

hab das #write log soweit mal geändert:

# write log
date +"%d.%m.%y %H:%M:%S | Auf Leitung: ${theline} \nName: ${name} \nNummer: ${caller} \n.\n"> /var/tmp/anrufliste.tmp
sed '50,10d' /var/tmp/anrufliste.txt >> /var/tmp/anrufliste.tmp
mv /var/tmp/anrufliste.tmp /var/tmp/anrufliste.txt

jetz wird es im plugin zwar sauber angezeigt aber wenn ich per browser auf http://192.168.2.5/cgi-bin/anrufliste gehe, ist wieder alles in einer zeile.
schreibe ich " <br />\n " oder " <br>\n " wirds im browser schön übersichtlich angezeigt aber per plugin nicht. da stehn das "<br>" dann mit drin.
geht das gebogen? :noidea:

ansonst eine geile sache das teil! sehr sinnvoll!!
 
Zuletzt bearbeitet:
Hi,
das mit dem Zeilenumbruch hatte ich auch schon überlegt, aber noch nicht versucht. Habe aber schon mal eine "schnelle" Lösung für dich: Verwende doch einfach mal ein \\n statt \n. Dann ist zwar die html-Ausgabe nicht so schön, aber auf der dbox sieht es dann ordentlich aus.


GEG

PS: Mal sehen ob man da noch was draus machen kann... Status der Fritzbox, Internetstatus u.s.w. über die dbox abfragen. Vor allem funktioniert das auch bei einem auf der Fritzbox gesetztem Passwort!
 
hi.

was genau bewirkt \\n ?

jetzt siehts ja so aus:
-----------------------------------------

09.08.06 19:59:52 | Auf Leitung: 1
Name: Ich
Nummer: 012345678

.
09.08.06 19:59:38 | Auf Leitung: 1
Name: Mein Handy
Nummer: 01712345678

.

-----------------------------------------
ist doch recht übersichtlich, oder?

die ausgabe über - http://192.168.2.5/cgi-bin/anrufliste , sieht recht fad aus. steht alles hintereinander.

statusanzeige der fritzbox und dsl anzeigen lassen wär gut. IP mit der sie im netz ist auch. Onlinezeit der fb nicht zu vergessen.
evtl eine zwangstrennung vom netz per knopfdruck.
etwa wie ein schalter an/aus/trennen mit sofortiger wiedereinwahl.
letzteres wär aber wohl zuviel des guten- wie?

und weil ich sooo neugierig bin.... wo/wie ändere ich den eintrag "skripte" auf der dbox in "fritzbox" ?

das wärs jetz erst mal wieder.


thomas
 
Von einem Freund die erweiterte Anzeige mit der aktuellen Zeit:



#!/bin/sh
PATH=/var/bin:/sbin:/bin
wget -q -O /tmp/anrufliste.txt http://[FB-IP]/cgi-bin/anrufliste

echo "-------------------------------------------------------------------------" > /tmp/anrufliste-zeit.txt
date +" %d.%m.%y %H:%M:%S - Aktuelle Zeit" >> /tmp/anrufliste-zeit.txt
echo "-------------------------------------------------------------------------" >> /tmp/anrufliste-zeit.txt
echo " " >> /tmp/anrufliste-zeit.txt
cat /tmp/anrufliste.txt >> /tmp/anrufliste-zeit.txt

cat /tmp/anrufliste-zeit.txt | grep -v html


Das ganze sieht dann so aus wie im Anhang.
 

Anhänge

  • dbox-telanzeige.gif
    dbox-telanzeige.gif
    3.9 KB · Aufrufe: 118
Hi... bin im Moment dabei noch ein paar änderungen zu mach. So wird das Skript auf der FB nicht mehr anrufliste heissen, sondern cmd, welches mit einem Parameter aufgerufen wird. Damit ist es flixiebler und man kann ein beliebiges Kommando mit einbinden! Werde am Wochenende dann mal die Änderungen posten. Habe auch die Formatierung von dir teilweise übernommen und schon mal testweise die Uptime der FB zur Anzeige auf der dbox mit eingebunden. Ich möchte damit eine FB Status-Abfrage erstellen (Up-Time; WLan info u.s.w.). Im nächsten Schritt soll dann eine Steuerung der FB implementiert werden. Am einfachsten ist hier der Reboot der FB über webzugriff ;-) Eventuell lässt sich das ja auch im TuxWetter PlugIn mit einbinden.

PS: \\n verhindert, dass das \n sofort umgestzt wird, sondern beim wget mit übertragen und dann auf der dbox ein Zeilenumbruch erfolgt.
 
Zuletzt bearbeitet:
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.