* 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 *