Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Bei Anruf -> Script: Nummer anzeigen lassen -Isdn
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation
View previous topic :: View next topic  
Author Message
fennex
Tux's lil' helper
Tux's lil' helper


Joined: 20 Jan 2004
Posts: 106
Location: Zurich, Europe

PostPosted: Sun Jul 04, 2004 12:53 pm    Post subject: Bei Anruf -> Script: Nummer anzeigen lassen -Isdn Reply with quote

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:
Code:
# emerge xosd


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
View user's profile Send private message
fennex
Tux's lil' helper
Tux's lil' helper


Joined: 20 Jan 2004
Posts: 106
Location: Zurich, Europe

PostPosted: Mon Jul 12, 2004 10:13 am    Post subject: Reply with quote

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
View user's profile Send private message
platinumviper
l33t
l33t


Joined: 12 Feb 2004
Posts: 647
Location: Munich, Germany

PostPosted: Mon Jul 12, 2004 10:30 pm    Post subject: ISDN Report Reply with quote

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
View user's profile Send private message
prodigy7
n00b
n00b


Joined: 02 Jul 2004
Posts: 30

PostPosted: Tue Jul 13, 2004 6:13 pm    Post subject: Reply with quote

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
View user's profile Send private message
x000x
Tux's lil' helper
Tux's lil' helper


Joined: 18 Jun 2002
Posts: 86
Location: Germany - Hamburg

PostPosted: Tue Jul 13, 2004 10:55 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation All times are GMT
Page 1 of 1

 
Jump to:  
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