View previous topic :: View next topic |
Author |
Message |
fennex Tux's lil' helper
Joined: 20 Jan 2004 Posts: 106 Location: Zurich, Europe
|
Posted: Sun Jul 04, 2004 12:53 pm Post subject: Bei Anruf -> Script: Nummer anzeigen lassen -Isdn |
|
|
Hallo,
wer eine Isdn-Karte besitzt kann sich ziemlich leicht bei einem Anruf die Nummer des Anrufers auf den Bildschirm schreiben lassen - denkbar sind natürlich auch andere Programmaufrufe. Ein Freund von mir kam auf die Idee, dass man mit seinem Handy zu Hause anruft und der Computer sich ins Internet einwählt und einen ssh-Daemon startet, sodass man jederzeit Zugriff auf seine Dateien hat. Hier aber erstmal die Anzeige der Nummer und des Namens.
Diese How-to gilt nur für diejenigen, die schon Isdn (isdn4k-utils) und im Kernel (ich hab zur Zeit 2.6.7) OldIsdn4Linux installiert haben. Wer Capi benutzt muss über capidrv das alte Isdn-Kernel-Zeugs emulieren. Mit Capi kenne ich mich nicht aus... Außerdem muss man noch xosd installiert haben:
Falls also schon isdn installiert ist, muss nun der Logger isdnlog bei jedem Boot gestartet werden, folgede Zeile muss in /etc/conf.d/local.start stehen: Code: | # cat /etc/conf.d/local.start
...
/etc/ppp/isdnlog-init
... |
Die isdnlog-init Datei sieht so aus: Code: | # cat /etc/ppp/isdnlog-init
#!/bin/bash
isdnlog -f/etc/isdn/isdnlog.isdnctrl0.options /dev/isdnctrl0 |
Nun muss man isdnlog.isdnctrl0.options editieren und vorallem darauf achten, dass start=yes gesetzt wird. Damit wird später das Script ausgeführt. Hier nur die wichtigsten Auszüge, ich kann auf Nachfrage auch die gesamte Datei mal posten: Code: | # cat /etc/isdn/isdnlog.isdnctrl0.options
daemon=yes
syslog=1015
stdout=2048
start=yes |
Nun ist die Datei callerid.conf zu ändern. Als NUMBER muss die eigene MSN eingetragen werden, ich hab mal meine rausgestrichen. Wichtig hier sind die Flags - das I steht für incoming calls. Bitte auch den Pfad zu dem Script ändern, welches aufgerufen werden soll. Code: | # cat /etc/isdn/callerid.conf
[MSN]
NUMBER = 5.....
SI = 1
Alias = Telefon
START = {
[FLAG]
FLAGS = I|R
USER = mh
GROUP = users
PROGRAM = /home/USER/bin/display_caller \$19 \$2
}
|
So sieht mein display_caller Script aus: Code: | # cat /home/USER/bin/display_caller
#!/bin/sh
#
# Skript, um im Zusammenspiel mit isdnlog die Anrufer anzuzeigen
#
STRING="Anruf von: "$1"\nNummer: "$2
echo -e $STRING > /tmp/isdn_tel
export XAUTHORITY="/home/mh/.Xauthority"
export DISPLAY=":0.0"
osd_cat -p top -A left --font="-*-arial black-*-*-*-*-24-*-*-*-*-*-*-*" -d 15 -o 10 -i 10 -O 2 -u black --colour=#ffa34f /tmp/isdn_tel &> /tmp/isdn_tel_err |
Damit landen die Nummern der Anrufe in /tmp/isdn_tel und werden mit osd_cat aus dem xosd package auf dem Bildschirm des Benutzers angezeigt. Achtung: falls hier Fehler auftreten, landen die in /tmp/isdn_tel_err. Es kann ja sein, dass nicht jeder den Font "arial black" installiert hat... (ist einfach mit xfontsel anzupassen)
Nach jedem Neustart muss Isdnlog erfolgreich laufen und alle Anrufe in /var/log/isdn.log zu sehen sein: Code: | # ps -e|grep isdn
8662 ? 00:00:00 isdnlog
# cat /var/log/isdn.log
...
|
Damit zu den Nummern auf dem Bildschirm auch Namen angegeben werden, kann man sich ein kleines Script schreiben (siehe nächster Post...)
Hoffe, das ich soweit helfen konnte.
Ciao, Martin
(Kernel 2.6.7 ohne Capi aber mit HiSax der mich ins Internet bringt...)
Last edited by fennex on Mon Jul 12, 2004 10:21 am; edited 4 times in total |
|
Back to top |
|
|
fennex Tux's lil' helper
Joined: 20 Jan 2004 Posts: 106 Location: Zurich, Europe
|
Posted: Mon Jul 12, 2004 10:13 am Post subject: |
|
|
Nachtrag:
es ist noch wichtig zu erwähnen, dass in der /etc/conf.d/local.start folgendes stehen muss: Code: | hisaxctrl hisax 1 4
/etc/ppp/isdnlog-init |
Auch die Anzeige der Namen durch die ~/.isdn geht nicht - ich habe ein Script geschrieben, mit dem man ein kleines Telefonbuch führt und dass den Anrufer in einem Fenster anzeigt. In der /etc/isdn/callerid.conf steht folgender Programmaufruf: Code: | PROGRAM = /home/*user*/bin/display_caller \$2
|
~/bin/display_caller:
Code: | #!/bin/sh
#
# Skript, um im Zusammenspiel mit isdnlog die Anrufer anzuzeigen
#
echo -e $1 > /tmp/isdn_tel
export XAUTHORITY="/home/*user*/.Xauthority"
export DISPLAY=":0.0"
exec /home/*user*/bin/phonebook show $1 |
~/bin/phonebook:
Code: | #!/usr/bin/perl -w
use Gtk; # load the Gtk-Perl module
use strict; # a good idea for all non-trivial Perl scripts
init Gtk; # initialize Gtk-Perl
set_locale Gtk; # internationalize
# convenience variables for true and false
my $false = 0;
my $true = 1;
my $book = "/home/*user*/.phonebook";
my $isdn = "/tmp/isdn_tel";
# test arguments
if (($ARGV[0] ne "show" && $ARGV[0] ne "set") || $ARGV[1] eq "") {
print "usage: isdntel [show|set] number/name\n";
exit(0);
}
# show number and look for name of caller
if ($ARGV[0] eq "show") {
# open phonebook
open (LOG, $book);
my @data = <LOG>;
close(LOG);
# search for number-name pair
my $name = "?";
my $num = substr($ARGV[1], 1);
if ($num eq "") {
$num = "?";
} else {
my $line;
foreach $line(@data) {
if ($line =~ /.*$num\%(.*)/) {
$name = $1;
}
}
}
my $text = "Anruf von: $name\nNummer: +$num";
# widget creation
my $window = new Gtk::Window("toplevel");
my $vbox = new Gtk::VBox(0, 5);
my $bbox = new Gtk::HBox(1, 0);
my $button = new Gtk::Button("Schließen");
my $label = new Gtk::Label("$text");
# callback registration
$window->signal_connect("delete_event", \&CloseAppWindow);
$button->signal_connect("clicked", \&CloseAppWindow);
# boxen
$bbox->pack_start($button, 0, 0, 0);
$vbox->pack_start($label, 0, 0, 0);
$vbox->pack_start($bbox, 0, 0, 0);
# set window attributes and show it
$window->border_width(15);
$window->set_title("Ring");
$window->add($vbox);
$window->set_position("center");
$window->show_all();
$button->grab_focus();
# Gtk event loop
main Gtk;
}
if ($ARGV[0] eq "set") {
open (NUM, "$isdn");
my @data = <NUM>;
close NUM;
my $num = substr($data[0], 0, length($data[0])-1);
open (LOG, ">>$book");
print LOG "$num%$ARGV[1]\n";
close LOG;
print "Added $ARGV[1] to addressbook\n";
}
exit( 0 );
### Callback function to close the window
sub CloseAppWindow
{
Gtk->exit( 0 );
return $false;
}
|
Bitte *user* in alles Scripts und Pfaden anpassen! Mit Code: | phonebook set "name" | kann man genau den letzten Anrufer ins Telefonbuch speichern - dieser wird beim nächsten Anruf von dieser Nummer angezeigt. Beide Scripte (phonebook, display_caller) müssen in /home/*user*/bin liegen.
Ciao, Martin |
|
Back to top |
|
|
platinumviper l33t
Joined: 12 Feb 2004 Posts: 658 Location: Munich, Germany
|
Posted: Mon Jul 12, 2004 10:30 pm Post subject: ISDN Report |
|
|
Manchmal möchte man auch wissen, wer während eigener Abwesenheit angerufen hat, oder wann man jemanden angerufen hat. Dazu muss auf dem Rechner mit der ISDN Karte ein WWW-Server laufen, z.B. Apache. Im cgi-bin Verzeichnis legt man zwei Dateien an.
1. isdnrep: Code: | #! /bin/bash
/usr/bin/isdnrep $* |
2. telefoninfo.cgi Code: | #! /bin/bash
/usr/bin/isdnrep -E -w1 |
Jetzt kann man von jedem anderen Rechner mit einem Browser http://ISDN-Rechner/cgi-bin/telefoninfo.cgi aufrufen, man sieht einen Tagesreport und kann sich tage- oder monatsweise durch die ganze isdn.log hangeln.
Falls der ISDN Rechner gleichzeitig Internet Router ist, sollte man den Zugriff von aussen natürlich auf die eigenen Rechner im Büro beschränken oder mit Passwort schützen.
platinumviper _________________ No money back garantee. In case of problems, don't call us, we call you. |
|
Back to top |
|
|
prodigy7 n00b
Joined: 02 Jul 2004 Posts: 30
|
Posted: Tue Jul 13, 2004 6:13 pm Post subject: |
|
|
Hi,
Da ich auch gerne immer wissen möchte, wer in meiner Abwesenheit angerufen hat, habe ich bis vor kurzem isdnlog eingesetzt. Da ich das aber mit dem 2.6er Kernel nicht mehr zum laufen gebracht habe, hab ich nach einer alternative gesucht und capi2name ( http://capi2name.berlios.de/ ) gefunden. Da das für mich etwas oversized war da ich nur eine Mail brauche, habe ich das ganze etwas umgecoded und capi2mail ( http://download.prodigy7.de/ ) genannt. Das Programm macht jetzt nichts anderes mehr als einfach ein Bash Skript aufzurufen dass dann eine Mail rausschickt. Nicht schön aber selten.
Das einzige Problem das ich momentan noch habe:
Wenn das Bash Skript aufgerufen wurde, idled es danach als Zombie rum bis ich den eigentlichen capi2mail Prozess gekillt habe. Vielleicht, wenn sich jemand damit auskennt, kann er mir ja einen Tip geben wie ich das Fixen kann da ich eigentlich nicht wirklich viel C/C++ kann.
Gruß, prodigy7 |
|
Back to top |
|
|
x000x Tux's lil' helper
Joined: 18 Jun 2002 Posts: 86 Location: Germany - Hamburg
|
Posted: Tue Jul 13, 2004 10:55 pm Post subject: |
|
|
Moin moin,
ich habe eine FRITZ!X USB / kernel 2.6.7-r9 / isdn4k-utils. Um Anrufer zu identifizieren etc.
nutze ich vbox3 + raccess. Damit habe ich, neben den Features die ihr hier aufgezählt habt,
auch gleich noch einen Anrufbeantworter.
Mit hilfe von yaps lasse ich mir die Nummern von (mir) wichtigen Anrufern als SMS auf mein Handy schicken.
Für interessierte hier meiner Meinung nach eine gute Anleitung: VBOX etc. _________________ -= Gruss Peter =-
-= alias x000x =-
Peter wrote: | perl -e 'print "\x47\x72\x75\x73\x73\x20\x50\x65\x74\x65\x72\x20\x3b\x2d\x29\x0a";' |
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|