isdnlog und Programstart bei Anuf
Hallo, mir ist es bis jetzt noch nicht gelungen unter Suse 9.1 und Fritz Card USB mit isdnlog bei einem Anruf ein Program auszuführen. In /var/log/isdn.log werden die Anrufe eingetragen. Muß ich außer den folgenden Einstellungen sonst noch was eintragen/beachten, daß es funktioniert? /etc/isdn/isdnlog.options.contr0 start=yes /etc/isdn/callerid.conf NUMBER = +49171* ALIAS = test ZONE = 1 START = { [FLAG] FLAGS = IU PROGRAM = /usr/bin/dialog --msgbox test 10 10 } Gruß Ralf
* Ralf Kleemann schrieb:
mir ist es bis jetzt noch nicht gelungen unter Suse 9.1 und Fritz Card USB mit isdnlog bei einem Anruf ein Program auszuführen. In /var/log/isdn.log werden die Anrufe eingetragen.
Muß ich außer den folgenden Einstellungen sonst noch was eintragen/beachten, daß es funktioniert?
/etc/isdn/isdnlog.options.contr0 start=yes
/etc/isdn/callerid.conf NUMBER = +49171* ALIAS = test ZONE = 1 START = { [FLAG] FLAGS = IU PROGRAM = /usr/bin/dialog --msgbox test 10 10 }
In der Zeile vor "NUMBER = ..." muss "[NUMBER]" zum Einleiten eines Abschnitts stehen. Wenn dies nicht weiterhilft oder die Zeile bereits vorhanden ist, ersetze bei "IU" bei "FLAGS" testweise durch "IRCH". (Gemäß "man callerid.conf" ist bei "U" zusätzlich "INTERVAL" erforderlich, was ich aber nicht überprüft habe.) Nach den Änderungen muss isdnlog jeweils neu gestartet werden ("killall isdnlog"), damit sie wirksam werden. Bitte sei so gut und berichte hier in jedem Fall vom Ergebnis. Gruß Tobias -- Tobias Becker E-Mail tobiasb@talypso.de PGP 0xD06BB70D * Und erfahrene Menschen sagen, daß derjenige, der zu viel sieht und zu viel weiß, ähnlich wie der, der zu wenig sieht und zu wenig weiß, leicht vom richtigen Weg abkommt und untergeht. * Stefan Chwin *
Tobias Becker schrieb:
In der Zeile vor "NUMBER = ..." muss "[NUMBER]" zum Einleiten eines Abschnitts stehen. Wenn dies nicht weiterhilft oder die Zeile bereits vorhanden ist, ersetze bei "IU" bei "FLAGS" testweise durch "IRCH". (Gemäß "man callerid.conf" ist bei "U" zusätzlich "INTERVAL" erforderlich, was ich aber nicht überprüft habe.) Nach den Änderungen muss isdnlog jeweils neu gestartet werden ("killall isdnlog"), damit sie wirksam werden.
ich habe nun die callerid.conf geändert: [NUMBER] NUMBER = +49171* ALIAS = test ZONE = 1 START = { [FLAG] FLAGS = IRCH PROGRAM = /home/ralf/test # cat /home/ralf/test #! /bin/bash /usr/bin/dialog --msgbox test 10 10 # tail -f -n0 /var/log/messages isdnlog: Error opening terminal: unknown wenn ich in die callerid.conf "PROGRAM = beep" eintrage, erhalte die folgende Ausgabe: isdnlog: Can't start "beep" with execvp(): No such file or directory Außerdem werden die Änderungen in der callerid.conf erst nach einem reboot wirksam. "killall isdnlog" und "isdnlog -f /etc/isdn/isdnlog.options.contr0 /dev/isdnctrl0" ist nicht ausreichend. Gruß Ralf
* Ralf Kleemann schrieb:
ich habe nun die callerid.conf geändert: [NUMBER] NUMBER = +49171* ALIAS = test ZONE = 1 START = { [FLAG] FLAGS = IRCH PROGRAM = /home/ralf/test
# cat /home/ralf/test #! /bin/bash /usr/bin/dialog --msgbox test 10 10
# tail -f -n0 /var/log/messages isdnlog: Error opening terminal: unknown
Damit steht schon einmal fest, das die Start-Anweisung in der callerid.conf von isdnlog erkannt wird. Die Fehlermeldung macht nach meiner Einschätzung auch Sinn, jedenfalls solange isdnlog als Daemon läuft. In diesem Fall ist ihm und seinen Child-Prozessen kein Terminal zugeordnet, so dass dialog auch keins öffnen kann. Funktionieren anstelle von dialog sollte z. B. die folgende Zeile in /home/ralf/test: echo "Date: $(date +"%Y-%m-%d %H:%M:%S")" >> /home/ralf/isdnlog-start
wenn ich in die callerid.conf "PROGRAM = beep" eintrage, erhalte die folgende Ausgabe:
isdnlog: Can't start "beep" with execvp(): No such file or directory
Auf meinen, zugegebenermaßen in die Jahre gekommenen, Linux-System gibt es kein beep, insofern kann ich Dir nicht Spezifisches dazu sagen. Generell sollte das zu startende Programm aber mit vollem Pfad angegeben sein, also z. B. /usr/bin/beep.
Außerdem werden die Änderungen in der callerid.conf erst nach einem reboot wirksam.
"killall isdnlog" und "isdnlog -f /etc/isdn/isdnlog.options.contr0 /dev/isdnctrl0" ist nicht ausreichend.
Mein Fehler. Es muss nicht "killall isdnlog" sondern "killall -HUP isdnlog" heißen. So wird isdnlog nicht einfach beendet, sondern neu gestartet, wobei die Konfigurationsdateien neu eingelesen werden. An Deinem händischen isdnlog Aufruf kann ich allerdings keinen Fehler entdecken, hiermit sollte die callerid.conf ebenfalls neu eingelesen werden. Gruß Tobias -- Tobias Becker E-Mail tobiasb@talypso.de PGP 0xD06BB70D * Und erfahrene Menschen sagen, daß derjenige, der zu viel sieht und zu viel weiß, ähnlich wie der, der zu wenig sieht und zu wenig weiß, leicht vom richtigen Weg abkommt und untergeht. * Stefan Chwin *
Tobias Becker schrieb:
Funktionieren anstelle von dialog sollte z. B. die folgende Zeile in /home/ralf/test:
echo "Date: $(date +"%Y-%m-%d %H:%M:%S")" >> /home/ralf/isdnlog-start
Nun funktioniert es zwar, aber wie verhindere ich, daß das Program nach dem zweitem klingeln ein zweites mal aufgerufen wird? cat /home/ralf/isdnlog-start Date: 2005-03-25 21:00:27 Date: 2005-03-25 21:00:31 Gruß Ralf
* Ralf Kleemann schrieb:
Nun funktioniert es zwar, aber wie verhindere ich, daß das Program nach dem zweitem klingeln ein zweites mal aufgerufen wird?
cat /home/ralf/isdnlog-start Date: 2005-03-25 21:00:27 Date: 2005-03-25 21:00:31
Hmm, bei mir erfolgt für Ring nur ein Aufruf. Möglicherweise zeigen sich bei Dir zwei Endgeräte an dem Anruf interessiert oder Dein START-Abschnitt enthält eine "INTERVAL = ..." Angabe. Zum Vergleich hier einmal meine Testkonfiguration:
| $ cat /etc/isdn/isdnlog.isdnctrl0.options | egrep -v "^ *($|#)" | [options] | daemon=yes | syslog=0x0000 | flush=yes | log=15 | monitor=no | stdout=0x3bf7 | other=yes | outfile= +/var/log/isdnlog/default.log | console= /dev/tty11 | newline=yes | start=yes | thruput=20 | time=2 | dual=0x702 | ciInterval=30 | Q931DUMP=N | ignoreRR=1 | ignoreCOLP=2 | closefds=y | skipProv = *; 13,1~; 33-33,1~; 33,6~; 200-299!; 321-323! | | | $ cat /etc/isdn/callerid.conf # Auszug: | [MSN] | NUMBER=xxxxxx | ALIAS=XXXXX | START={ | [FLAG] | FLAGS=IRCH | PROGRAM=/home/tobiasb/code/isdnlog/fd/fdinfo "\$2" "\$1" "\$4" "\$5" "\$6" | } | | | $ cat /home/tobiasb/code/isdnlog/fd/fdinfo # Auszug: | #!/bin/bash | LF="/home/tobiasb/code/isdnlog/fd/fdlog" | echo "------------------------------------------------------------------------" >> $LF | echo "Date: $(date +"%Y-%m-%d %H:%M:%S")" >> $LF | echo "From: $1" >> $LF | echo "Flags [1]: $2" >> $LF | echo "Connect [4]: $3" >> $LF | echo "Duration [5]: $4" >> $LF | echo "Disconnect [6]: $5" >> $LF | echo "------------------------------------------------------------------------" >> $LF | | | $ cat /home/tobiasb/code/isdnlog/fd/fdlog # Auszug: | ------------------------------------------------------------------------ | Date: 2005-03-25 22:31:19 | From: +494155yyyyyy | Flags [1]: IR | Connect [4]: ? | Duration [5]: ? | Disconnect [6]: ? | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | Date: 2005-03-25 22:31:44 | From: +494155yyyyyy | Flags [1]: IC | Connect [4]: Fri Mar 25 22:31:43 2005 | Duration [5]: 0 | Disconnect [6]: ? | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | Date: 2005-03-25 22:31:58 | From: +494155yyyyyy | Flags [1]: IH | Connect [4]: Fri Mar 25 22:31:43 2005 | Duration [5]: 14 | Disconnect [6]: Fri Mar 25 22:31:57 2005 | ------------------------------------------------------------------------
Einige Angaben in der zuerst wiedergebenen Parameterdatei des isdnlogs wie "skipProv" erfordern den aktuellen isdnlog. Welche Einträge Dein isdnlog unterstützt, ist in "man isdnlog" beschrieben. Sofern vorhanden, wäre vor allen "closefds" relevant. Beim protokollierten Anruf klingelt nur ein Telefon. Gruß Tobias -- Tobias Becker E-Mail tobiasb@talypso.de PGP 0xD06BB70D * Und erfahrene Menschen sagen, daß derjenige, der zu viel sieht und zu viel weiß, ähnlich wie der, der zu wenig sieht und zu wenig weiß, leicht vom richtigen Weg abkommt und untergeht. * Stefan Chwin *
Tobias Becker schrieb:
Einige Angaben in der zuerst wiedergebenen Parameterdatei des isdnlogs wie "skipProv" erfordern den aktuellen isdnlog. Welche Einträge Dein isdnlog unterstützt, ist in "man isdnlog" beschrieben. Sofern vorhanden, wäre vor allen "closefds" relevant. Beim protokollierten Anruf klingelt nur ein Telefon.
Wenn ich FLAGS=IH verwende, funktioniert es und das Program wird nur einmal aufgerufen. Bei FLAGS=IR wird es aber zweimal aufgerufen. Die Fritz Card USB hängt an der internen s0 der Euracom. Ich habe die isdnlog Version 4.68, ist dies die aktuelle Version? Zu was ist closefds=y gut? Hier ist meine Konfiguration: # cat /etc/isdn/isdnlog.options.contr0 | egrep -v "^ *($|#)" [options] daemon=yes syslog=1013 monitor=yes stdout=2048 newline=yes width=80 start=yes thruput=5 time=0 bilingual=no amt=0 # tail -f -n0 /var/log/messages isdnlog: Mar 27 01:41:39 * Call to tei 127 from +49 30/12, Berlin on testmsn RING (Speech) isdnlog: Mar 27 01:41:39 * Call to tei 127 from +49 30/12, Berlin on testmsn HLC: CCITT, Telefonie kernel: capidrv-1: incoming call 12,1,1,21 kernel: capidrv-1: patching si2=1 to 0 for VBOX kernel: isdn_net: call from 12 -> 0 21 ignored kernel: isdn_tty: call from 12 -> 21 ignored kernel: capidrv-1: incoming call 12,1,0,21 ignored isdnlog: Mar 27 01:41:43 * Call to tei 127 from +49 30/12, Berlin on testmsn RING (Speech) isdnlog: Mar 27 01:41:43 * Call to tei 127 from +49 30/12, Berlin on testmsn HLC: CCITT, Telefonie kernel: capidrv-1: incoming call 12,1,1,21 kernel: capidrv-1: patching si2=1 to 0 for VBOX kernel: isdn_net: call from 12 -> 0 21 ignored kernel: isdn_tty: call from 12 -> 21 ignored kernel: capidrv-1: incoming call 12,1,0,21 ignored isdnlog: Mar 27 01:42:35 Call to tei 127 from +49 30/12, Berlin on testmsn HANGUP (Timeout) BTW: Woher weiß isdnlog eigentlich die Namen der Ortsnetze? Gruß Ralf P.S. was hat eigentlich coney.ath.cx mit suse zu tun? Bei den 3 mails, die ich an suse-isdn@suse.com geschrieben habe, kam 3 mal folgendes zurück: Betreff: Undelivered Mail Returned to Sender Reporting-MTA: dns; coney.ath.cx Arrival-Date: Sat, 26 Mar 2005 15:14:33 +0100 (CET) Final-Recipient: rfc822; coney@localhost.conrad.con Action: failed Status: 5.0.0 Diagnostic-Code: X-Postfix; mail forwarding loop for coney@localhost.conrad.con Betreff: Re: [suse-isdn] isdnlog und Programstart bei Anuf Von: Ralf Kleemann <Ralf_Kleemann@gmx.de> Datum: Fri, 25 Mar 2005 21:23:44 +0100 An: suse-isdn@suse.com Received: from localhost (localhost [127.0.0.1]) by coney.ath.cx (Postfix) with ESMTP id 662A44FDF3 for <coney@localhost>; Sat, 26 Mar 2005 15:14:33 +0100 (CET)
Hi Ralf, Ralf Kleemann sagte:
Tobias Becker schrieb:
Einige Angaben in der zuerst wiedergebenen Parameterdatei des isdnlogs wie "skipProv" erfordern den aktuellen isdnlog. Welche Einträge Dein isdnlog unterstützt, ist in "man isdnlog" beschrieben. Sofern vorhanden, wäre vor allen "closefds" relevant. Beim protokollierten Anruf klingelt nur ein Telefon.
Wenn ich FLAGS=IH verwende, funktioniert es und das Program wird nur einmal aufgerufen. Bei FLAGS=IR wird es aber zweimal aufgerufen.
wenn du ein Interval angibst (z.B. 60 Sekunden) sollte das dann nicht mehr passieren. Also: FLAGS = I|R|U INTERVAL = 60
Die Fritz Card USB hängt an der internen s0 der Euracom. Ich habe die isdnlog Version 4.68, ist dies die aktuelle Version?
Zu was ist closefds=y gut?
Hier ist meine Konfiguration:
# cat /etc/isdn/isdnlog.options.contr0 | egrep -v "^ *($|#)" [options] daemon=yes syslog=1013 monitor=yes stdout=2048 newline=yes width=80 start=yes thruput=5 time=0 bilingual=no amt=0
# tail -f -n0 /var/log/messages isdnlog: Mar 27 01:41:39 * Call to tei 127 from +49 30/12, Berlin on testmsn RING (Speech) isdnlog: Mar 27 01:41:39 * Call to tei 127 from +49 30/12, Berlin on testmsn HLC: CCITT, Telefonie kernel: capidrv-1: incoming call 12,1,1,21 kernel: capidrv-1: patching si2=1 to for VBOX kernel: isdn_net: call from 12 -> 21 ignored kernel: isdn_tty: call from 12 -> 21 ignored kernel: capidrv-1: incoming call 12,1,0,21 ignored isdnlog: Mar 27 01:41:43 * Call to tei 127 from +49 30/12, Berlin on testmsn RING (Speech) isdnlog: Mar 27 01:41:43 * Call to tei 127 from +49 30/12, Berlin on testmsn HLC: CCITT, Telefonie kernel: capidrv-1: incoming call 12,1,1,21 kernel: capidrv-1: patching si2=1 to for VBOX kernel: isdn_net: call from 12 -> 21 ignored kernel: isdn_tty: call from 12 -> 21 ignored kernel: capidrv-1: incoming call 12,1,0,21 ignored isdnlog: Mar 27 01:42:35 Call to tei 127 from +49 30/12, Berlin on testmsn HANGUP (Timeout)
BTW: Woher weiß isdnlog eigentlich die Namen der Ortsnetze?
aus ner Datenbank die automatisch mitinstalliert wird.
Gruß Ralf
P.S. was hat eigentlich coney.ath.cx mit suse zu tun? Bei den 3 mails, die ich an suse-isdn@suse.com geschrieben habe, kam 3 mal folgendes zurück:
Betreff: Undelivered Mail Returned to Sender Reporting-MTA: dns; coney.ath.cx Arrival-Date: Sat, 26 Mar 2005 15:14:33 +0100 (CET) Final-Recipient: rfc822; coney@localhost.conrad.con Action: failed Status: 5.0.0 Diagnostic-Code: X-Postfix; mail forwarding loop for coney@localhost.conrad.con
die haben nix mit SUSE zu tun. Da hat sich ganz einfach jemand auf der Liste eingetragen, seine Mailadresse funktioniert nicht richtig, und jeder der jetzt Mails an die Liste schreibt kriegt die sch*** Fehlermeldung. Ein Hilfeschrei mit der Bitte an den Moderator die Person aus dem Verteiler zu löschen schafft meistens Abhilfe... Grüße, Ingo
* Ralf Kleemann schrieb:
Wenn ich FLAGS=IH verwende, funktioniert es und das Program wird nur einmal aufgerufen. Bei FLAGS=IR wird es aber zweimal aufgerufen.
Die Fritz Card USB hängt an der internen s0 der Euracom. Ich habe die isdnlog Version 4.68, ist dies die aktuelle Version?
[umgestellt]
# tail -f -n0 /var/log/messages isdnlog: Mar 27 01:41:39 * Call to tei 127 from +49 30/12, Berlin on testmsn RING (Speech) isdnlog: Mar 27 01:41:39 * Call to tei 127 from +49 30/12, Berlin on testmsn HLC: CCITT, Telefonie isdnlog: Mar 27 01:41:43 * Call to tei 127 from +49 30/12, Berlin on testmsn RING (Speech) isdnlog: Mar 27 01:41:43 * Call to tei 127 from +49 30/12, Berlin on testmsn HLC: CCITT, Telefonie isdnlog: Mar 27 01:42:35 Call to tei 127 from +49 30/12, Berlin on testmsn HANGUP (Timeout)
Wie aus dem Log hervorgeht, wird der eingehende Anruf auf testmsn vom Netz (normalerweise die Vermittlungsstelle, hier Deine Euracom) zwei mal avisiert ("RING"). Sofern ich mich recht entsinne, ist dies für den Fall vorgesehen, dass sich beim ersten Mal kein Endgerät am Anruf interessiert zeigt und das Netz somit keine Rückmeldung ("ALERTING") erhält. isdnlog selbst greift nicht aktiv in die ISDN-Kommunikation ein, zählt daher nicht als interessiertes Endgerät. Würde z. B. die capisuite oder vbox für testmsn eingerichtet sein, sollte es nur ein "RING" geben und auch nur ein Skriptstart erfolgen. In Deinem Fall sollte die von Ingo vorgeschlagene Lösung helfen. Nebenbei bemerkt: Solltest Du über einen Anlagenanschluss mit Durchwahl verfügen, könntest Du dessen Rufnummer zusätzlich zu 30 oder 030 als AREACODE in /etc/isdn/isdn.conf angeben. Hiermit sollte dann die Quellrufnummer richtig als +49 30/abcdef12 angezeigt werden.
Zu was ist closefds=y gut?
Standardmäßig, also ohne diese Zeile, erbt das gestartete Programm alle zum Zeitpunkt des Starts geöffneten Dateideskriptoren (fds) von isdnlog, was zumindest in einigen Fällen zu Problemen führt:
| From: Jan Bernhardt <j.bernhardt@gmx.de> | Newsgroups: de.comp.os.unix.linux.isdn | Subject: isdnlog und durch Anrufe gestartete Programme | Date: Thu, 15 Jan 2004 15:07:04 +0100 | Message-ID: <pan.2004.01.15.14.07.03.59282@gmx.de> | | ich benutze isdnlog zum Kontrollieren meiner DSL-Verbindung. Wenn ich von | meinem Handy eine meiner MSNs wähle, wird ein Skript gestartet, dass | seinerseits ein '/sbin/ifup <interface>' bzw. ein '/sbin/ifdown | <interface>' macht. Leider blieb isdnlog nachdem Initiieren der Verbindung | stehen und wartete darauf, dass das Skript terminierte. | | Als ich nach der Ursache des Problems suchte, wurde ich in start_prog.c in | der Funktion Ring(...) fündig: Vor dem Starten des Programms werden nicht | alle unbenötigten Dateideskriptoren geschlossen, was dazu führen kann, | dass der gestartete Subprozess nicht entfernt wird.
Daher gibt es ab isdnlog 4.68 diese Option für die Parameterdatei.
BTW: Woher weiß isdnlog eigentlich die Namen der Ortsnetze?
Dafür gibt es die Destinationsdatenbank /usr/lib/isdn/dest.cdb, die neben den internationalen Landesvorwahlen auch Ortsnetznamen für einige Länder enthalten kann. Welche Länder vorhanden sind, zeigt isdnlog beim Start an, in diesem Fall sind alle verfügbaren Länder in der dest.cdb vorhanden:
| isdnlog Version 4.70 starting | Holiday Version 1.10-Germany [12-Apr-1999] loaded [11 entries from /usr/local/lib/isdn/holiday-de.dat] | Dest V1.01: File '/usr/local/lib/isdn/dest.cdb' opened fine - Dest 1.0 int (+h) AT DE NL CH BE CN
Die Quelldatei für die deutschen Ortsnetze ist isdn4k-utils/isdnlog/tools/zone/de/code (auch unter http://www.isdn4linux.de/cgi-bin/viewcvs.cgi/isdn4k-utils/isdnlog/tools/zone... verfügbar). Korrekturhinweise hierzu nehme ich jederzeit gerne entgegen. Gruß Tobias -- Tobias Becker E-Mail tobiasb@talypso.de PGP 0xD06BB70D * Und erfahrene Menschen sagen, daß derjenige, der zu viel sieht und zu viel weiß, ähnlich wie der, der zu wenig sieht und zu wenig weiß, leicht vom richtigen Weg abkommt und untergeht. * Stefan Chwin *
Tobias Becker schrieb:
In Deinem Fall sollte die von Ingo vorgeschlagene Lösung helfen.
Mit FLAGS = IRU INTERVAL = 10 bekomme ich folgende Programmstartzeiten: Date: 2005-03-27 22:42:49 IR +493012 +493021 ? Date: 2005-03-27 22:42:53 IR +493012 +493021 ? Date: 2005-03-27 22:42:59 IR +493012 +493021 6 Date: 2005-03-27 22:43:03 IR +493012 +493021 10 Date: 2005-03-27 22:43:09 IR +493012 +493021 16 Date: 2005-03-27 22:43:13 IR +493012 +493021 20 Date: 2005-03-27 22:43:19 IR +493012 +493021 26 Date: 2005-03-27 22:43:23 IR +493012 +493021 30 Date: 2005-03-27 22:43:29 IR +493012 +493021 36 Date: 2005-03-27 22:43:33 IR +493012 +493021 40 Date: 2005-03-27 22:43:39 IR +493012 +493021 46 Date: 2005-03-27 22:43:43 IR +493012 +493021 50 Ist aber egal, da mir z.Zt. FLAGS = IH ausreicht. Falls ich FLAGS = IR mal benötige, werde ich das Problem lösen, indem ich beim Scriptaufruf mit "export ilogzeit=`date +%s`" die Unixzeit speichere und beim nächsten aufruf prüfe ob inzwischen 10 sec vergangen sind.
Die Quelldatei für die deutschen Ortsnetze ist isdn4k-utils/isdnlog/tools/zone/de/code (auch unter http://www.isdn4linux.de/cgi-bin/viewcvs.cgi/isdn4k-utils/isdnlog/tools/zone... verfügbar). Korrekturhinweise hierzu nehme ich jederzeit gerne entgegen.
Ich habe in der Quelldatei mal für den Südwesten, wo ich wohne, die Ortsnetze angeschaut und einige Fehler gefunden. Hier sind die richtigen Schreibweisen: 6292 Seckach 6349 Billigheim-Ingenheim 6844 Blieskastel-Altheim 6866 Perl-Nennig 7184 Kaisersbach 7254 Waghäusel 7260 Sinsheim-Hilsbach 7420 Deißlingen 7455 Dornhan 7482 Horb-Dettingen 7571 Friedrichshafen 7704 Geisingen 7728 Niedereschach 7773 Bodman-Ludwigshafen 7971 Gaildorf Zusätze für doppelte Einträge 6897 Sulzbach Saar 7193 Sulzbach a.d.Murr Woher kann ich die aktuelle dest.cdb bekommen? Gruß Ralf
* Ralf Kleemann schrieb:
Mit FLAGS = IRU INTERVAL = 10 bekomme ich folgende Programmstartzeiten:
Date: 2005-03-27 22:42:49 IR +493012 +493021 ? Date: 2005-03-27 22:42:53 IR +493012 +493021 ? Date: 2005-03-27 22:42:59 IR +493012 +493021 6 Date: 2005-03-27 22:43:03 IR +493012 +493021 10 Date: 2005-03-27 22:43:09 IR +493012 +493021 16 Date: 2005-03-27 22:43:13 IR +493012 +493021 20 Date: 2005-03-27 22:43:19 IR +493012 +493021 26 Date: 2005-03-27 22:43:23 IR +493012 +493021 30 Date: 2005-03-27 22:43:29 IR +493012 +493021 36 Date: 2005-03-27 22:43:33 IR +493012 +493021 40 Date: 2005-03-27 22:43:39 IR +493012 +493021 46 Date: 2005-03-27 22:43:43 IR +493012 +493021 50
Ist aber egal, da mir z.Zt. FLAGS = IH ausreicht. Falls ich FLAGS = IR mal benötige, werde ich das Problem lösen, indem ich beim Scriptaufruf mit "export ilogzeit=`date +%s`" die Unixzeit speichere und beim nächsten aufruf prüfe ob inzwischen 10 sec vergangen sind.
Dadurch wird deutlich, dass isdnlog so auf die doppelte Anrufsignalisierung reagiert, als würden zeitversetzt parallel zwei Anrufe eingehen. Ich setze das mal auf meine TODO-Liste, allerdings mit geringer Priorität.
Ich habe in der Quelldatei mal für den Südwesten, wo ich wohne, die Ortsnetze angeschaut und einige Fehler gefunden.
Vielen Dank für die Korrekturen, ich habe sie ins CVS eingepflegt.
Woher kann ich die aktuelle dest.cdb bekommen?
Ich habe mal eine Anleitung dazu geschrieben, kann Dir die neue dest.cdb aber auch genausogut per Mail zuschicken, womit sich Dein Aufwand den Austausch der /usr/lib/isdn/dest.cdb beschränken würde. ####################################################################### 1. Quelltexte beschaffen, wie unter http://www.isdn4linux.de/faq/i4lfaq-2.html#ss2.2 beschrieben, das Passwort lautet readonly: | $ cvs -d :pserver:guest@cvs.isdn4linux.de:/i4ldev login | (Logging in to guest@cvs.isdn4linux.de) | CVS password: | | $ cvs -d :pserver:guest@cvs.isdn4linux.de:/i4ldev checkout isdn4k-utils | cvs server: Updating isdn4k-utils | U isdn4k-utils/.config.rpm | U isdn4k-utils/COPYING | U isdn4k-utils/LEGAL.ipppcomp | [...] | U isdn4k-utils/xmonisdn/netwaiting | U isdn4k-utils/xmonisdn/xmonisdn.c | U isdn4k-utils/xmonisdn/xmonisdn.man.in Sollen die Quelltexte später aktualisiert werden, reicht dafür: | $ cvs update -dP Alternativ gibt es unter ftp://ftp.isdn4linux.de/pub/isdn4linux/CVS-Snapshots/ automatisch erstellte Archive, im konkreten Fall würde das ab morgen verfügbare isdn4k-utils-CVS-2005-03-29.tar.bz2 benötigt. 2. ISDN-Utils konfigurieren: | $ cd isdn4k-utils/ | $ make config | make[1]: Entering directory `/home/foo/isdn4k-utils/scripts/lxdialog' | gcc -O2 -Wall -fomit-frame-pointer -DLOCALE -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>" -c lxdialog.c -o lxdialog.o | [...] | make[1]: Leaving directory `/home/foo/isdn4k-utils/scripts/lxdialog' | # | # Using defaults found in scripts/defconfig | # Gibt es hierbei ein Fehler, sind die ncurses RPMs nachzuinstallieren. In der anschließend erscheinenden Oberfläche sollten für die Absicht, eine neue dest.cdb zu erzeugen, folgende Änderungen vorgenommen werden: - Unter "Runtime configuration tools", "Card configuration tools", "Applications" und "Documentation" jeweils alle Einträge mit "N" abwählen. - Unter "Tools for monitoring activity" alles bis auf isdnlog abwählen. - Hier im weiteren Untermenü "Options for isdnlog package" zumindest "Include German cities in destination database" auswählen, weitere nach Belieben. - Die Konfiguration über widerholtes "Exit" verlassen und das Speichern der Änderungen bestätigen. Anschließend werden mehrere configure-Läufe für isdnlog durchgeführt: | The isdn4k-utils package is now hopefully configured for your setup. | You may build the package with "make". After that you may install | the package with "make install" (Installation requires root privileges). | | make -f Makefile.tmp subconfig | make[1]: Entering directory `/home/foo/isdn4k-utils' | Selected subdirs: isdnlog/tools/cdb lib isdnlog/tools/zone isdnlog/tools/dest isdnlog | | Running configure in isdnlog/tools/cdb ... | | creating cache ./config.cache | checking for gcc... gcc | checking whether the C compiler (gcc ) works... yes | [...] | config.status: creating samples/isdn.conf.pl | config.status: creating policy.h | make[1]: Leaving directory `/home/foo/isdn4k-utils' 3. Die dest.cdb erzeugen: | $ cd isdnlog/tools/cdb | $ make cdbmake | cc -Wall -O2 -c cdbmake.c -o cdbmake.o | cc -Wall -O2 -c cdbmake_add.c -o cdbmake_add.o | cc -Wall -O2 -c cdbmake_hash.c -o cdbmake_hash.o | cc -Wall -O2 -c cdbmake_pack.c -o cdbmake_pack.o | cc cdbmake.o cdbmake_add.o cdbmake_hash.o cdbmake_pack.o -o cdbmake | $ cd ../dest | $ make data | Building destination database dest.cdb ... | ./makedest -v | Writing to ./dest.cdb.dump | Adding global ../../country-de.dat ... | End. | ./makedest -v -gcities.dat -a | Adding global cities.dat ... | Writing to ./dest.cdb.dump | End. | ./makedest -v -a de | Writing to ./dest.cdb.dump | Adding de... | End. | ../cdb/cdbmake < dest.cdb.dump dest.cdb dest.temp | dest.cdb complete. Alternativ sollte es auch ein "make" im Verzeichnis isdn4k-utils tun, bei dem dann isdnlog & Co. vollständig erzeugt werden. 4. Abschließend als root die dest.cdb manuell installieren. Weiterhin im Verzeichnis isdn4k-utils/tools/dest: | # cp dest.cdb /usr/lib/isdn Zuvor ggf. die alte dest.cdb sichern. Anstelle von /usr/lib/isdn verwenden manche Distributionen auch /usr/share/isdn. Nun noch isdnlog neu starten: | # killall -HUP isdnlog Ob alles geklappt hat, läßt sich mit isdnrate feststellen: vorher: | $ isdnrate -N 06897 07193 | 06897 => +49 6897 - Sulzbach (DE) - DTAG xxl Fr | 07193 => +49 7193 - Sulzbach (DE) - DTAG xxl Fr nachher: | $ isdnrate -N 06897 07193 | 06897 => +49 6897 - Sulzbach Saar (DE) - DTAG xxl Fr | 07193 => +49 7193 - Sulzbach a d Murr (DE) - DTAG xxl Fr ####################################################################### Gruß Tobias -- Tobias Becker E-Mail tobiasb@talypso.de PGP 0xD06BB70D * Und erfahrene Menschen sagen, daß derjenige, der zu viel sieht und zu viel weiß, ähnlich wie der, der zu wenig sieht und zu wenig weiß, leicht vom richtigen Weg abkommt und untergeht. * Stefan Chwin *
Ralf Kleemann <Ralf_Kleemann@gmx.de> wrote:
Tobias Becker schrieb:
In der Zeile vor "NUMBER = ..." muss "[NUMBER]" zum Einleiten eines Abschnitts stehen. Wenn dies nicht weiterhilft oder die Zeile bereits vorhanden ist, ersetze bei "IU" bei "FLAGS" testweise durch "IRCH". (Gemäß "man callerid.conf" ist bei "U" zusätzlich "INTERVAL" erforderlich, was ich aber nicht überprüft habe.) Nach den Änderungen muss isdnlog jeweils neu gestartet werden ("killall isdnlog"), damit sie wirksam werden.
ich habe nun die callerid.conf geändert: [NUMBER] NUMBER = +49171* ALIAS = test ZONE = 1 START = { [FLAG] FLAGS = IRCH PROGRAM = /home/ralf/test
bei mir siehts z.B. so aus: [MSN] NUMBER = 144310 ALIAS = ISDN-Telefon START = { [FLAG] FLAGS = IR PROGRAM = /home/sagichnicht/.bin/send_isdncaller.pl \$2 } oder [MSN] NUMBER = 144XXX ALIAS = BringUp START = { [FLAG] FLAGS = OIRC PROGRAM = /usr/sbin/bringup.sh \$1 \$2 \$3 } -- Andreas Meyer Mein VoIP-Anschluß: Festnetz: 06341620317 sip:2620317@sipgate.de
participants (4)
-
Andreas Meyer
-
Ingo Göppert
-
Ralf Kleemann
-
Tobias Becker