Nachdem ich letztens meinen Speedport W500V in einen W501V tauschen lies (einfach 0800 -
3300200 anrufen und von Problemen bei VOIP und Wlan berichten) habe ich mich mal ein bischen
näher mit der FritzBox beschäftigt und herausgefunden wie ich mich benarichtigen lassen kann
wenn ein Anruf eingeht :)
Es ist für den faulen Informatiker halt schon praktisch zu wissen wer anruft, ohne extra an
s Telefon zu springen, deswegen hier mal kurz eine Anleitung.
Was braucht man?
- Eine Fritzbox/Speedport W501V
- Ein Adressbuch
Gehen wir das ganze mal durch.
Das Adressbuch erzeuge ich indem ich das Adressbuch meines Nokia Handys per Bluetooth
übertrage und abspeicher. Dies erledige ich mit folgendem kleinen Script:
#/bin/sh
ADDRESSBOOK=~/doc/addressbook
gnokii --getphonebook ME 1 end -r | sed -e "s/\+49/0/" | awk -F";" '{print $2":"$1}' >
$ADDRESSBOOK
Falls man das ganze per Hand machen will, das Format ist einfach Telefon Nr:Name
Das gnokii weiss woher es das Adressbuch holen soll, braucht man noch eine
Konfigurationsdatei für sein Handy. Bei mir sieht ~/.gnokiirc wie folgt für ein Nokia 6230i über
Bluetooth aus:
[global]
port = 00:13:FD:99:C1:0b
model = 6230
connection = bluetooth
rfcomm_channel = 1
Jetzt muss man noch den Anrufmonitor der Fritzbox aktivieren, dazu genügt es #96*5* zu
wählen.
Jetzt noch einfach folgendes
Script starten und sich über Meldungen freuen :)
#!/usr/bin/perl -w
#
# read_calls.pl
#
# Synopsis:
# Script is run as a service daemon. It connects to the Fritz!Box Fon Ata
# (port 1012) and receives the calling string (number of the party calling
# in). This number is passed on to another program. I.e. this could be an
# Jabber client or a "look who called list".
#
# Requirements:
# - must be able to reach tcp port 1012 on your FB
# - activate call monitor on FB by dialing #96*5*
# - required perl package
#
# Licence: GPL2
#
# History:
# ver. 0.1 - 20060401 - Lars G. Sander, Zuerich
# First public release.
# ver. 0.2 - 20060510 - Ulrich Dangel <fritzbox@spamt.net>
# Added telefon book support
# To Do:
# - beefed up security?
# - proxy functionality
# - additionally monitor calls OUT
use IO::Socket;
use strict;
# your fritz box (ip or hostname)
my $FRITZBOX="fritz.box";
my $TELEFONBUCH="$ENV{HOME}/doc/addressbook";
my $EXTPRO="/usr/bin/X11/xmessage";
#-------- NO USER SERVICABLE PARTS BELOW -------#
sub read_book {
my %book = ();
open(IN, "<", $TELEFONBUCH) || return ();
while(<IN>){
chomp;
my @elements = split(":",$_);
$book{$elements[0]}=$elements[1];
}
close(IN);
return %book;
}
my %book = &read_book;
my $sock = new IO::Socket::INET (
PeerAddr => $FRITZBOX,
PeerPort => '1012',
Proto => 'tcp'
);
die "Could not create socket: $!\n" unless $sock;
while(<$sock>) {
if ($_ =~ /RING/){
my @C = split(/;/);
my $nr="";
if (exists($book{$C[3]})) {
$nr=$book{$C[3]};
} else {
$nr=$C[3];
}
my @args = ($EXTPRO, "Anruf: ", $nr);
system(@args);
}
}
Ich hoffe das hilft irgendjemanden :)
Uli