Callmonitor 1.*

Status
Für weitere Antworten geschlossen.
Als root (wie fast alles auf der Fritzbox); an Rechten kann es also nicht liegen. Bekommst du irgendwelche Fehlermeldungen von deinem Skript? (beim Testanruf oder mit aktiviertem Debug-Modus des Callmonitors im Syslog)
..
Nach einem Blick in die empty-Manpage wette ich, dass die relativen Dateinamen in "-i in -o out" das Problem sind. Vermutlich ist das Arbeitsverzeichnis, wenn dein Skript vom Callmonitor aufgerufen wird, nicht einmal beschreibbar (zumindest ist es unspezifiziert); so können die Dateien nicht erzeugt werden.


Ich habe den Debug-Modus aktiviert. Da erscheint rein gar nichts im Syslog (der Syslog-Daemon läuft), wenn ich mit dem Handy mich selbst anrufe.
Wenn ich das ganze über die Funktion Testanruf mache, dann sieht das wie folgt aus:
Code:
[0:2] parameter DEST='0797xxxxxxx' matches pattern '0797xxxxxxx'
[0:2] SUCCEEDED
[0:2] ACTION: '/var/tmp/reboot7050.sh'

Also so wie es aussieht ruft der Callmonitor schon

/var/tmp/reboot7050.sh

auf.
Wenn ich an der Konsole nach /var/tmp wechsle und dann mit ./reboot7050.sh das Skript ausführe, dann funktionierts, wenn der Callmonitor das macht, dann komischerweise nicht.
Und /var/tmp ist ja auf jeden Fall beschreibbar.

Und wenn Du sagst, fast alles wird auf der FB per root ausgeführt, dass denke ich, dass sowohl der Callmonitor als auch das Erzeugen der reboot7050.sh als root passiert.

Sprich wenn das, was unter rc.custom eingetragen ist, ausgeführt wird, dann auch als root. Sprich wenn dann ein chmod +x gemacht wird, dann ist root der Eigentümer und kann es dann starten und damit auch der Callmonitor.

empty habe ich in's Image einbauen lassen, und zwar unter /usr/bin

Zum Thema empty:
Du sagst, das Arbeitsverzeichnis ist nicht angegeben.
Wie kann ich das machen?
Und warum funktioniert es, wenn ich es selbst an der Konsole ausführe, während wenn der Callmonitor das macht, dann plötzlich nicht?
 
Zuletzt bearbeitet:
Ja, /var/tmp ist auf jeden Fall beschreibbar.
Wenn ich an der Konsole nach /var/tmp wechsle und dann mit ./reboot7050.sh das Skript ausführe, dann funktionierts, wenn der Callmonitor das macht, dann komischerweise nicht.
Hier ist dein Denkfehler: Wer sagt dir, dass der Callmonitor dein Skript mit /var/tmp als Arbeitsverzeichnis aufruft? Wie gesagt, das Arbeitsverzeichnis kann irgendeines sein.

Wenn du sichergehen willst, das du ein bestimmtes Arbeitsverzeichnis benutzt, solltest du am Anfang deines Skript ein "cd" einbauen. (Das hast du ja auf der Konsole auch gemacht, bevor es funktioniert hat.)

Viel Erfolg,
Andreas
 
Wenn du sichergehen willst, das du ein bestimmtes Arbeitsverzeichnis benutzt, solltest du am Anfang deines Skript ein "cd" einbauen. (Das hast du ja auf der Konsole auch gemacht, bevor es funktioniert hat.

Hallo Andreas,

ich hab nun ein cd /var/tmp eingebaut, jetzt läuft das skipt und macht das, was es soll.
Aber warum will das empty Schreibrechte? Es schreibt doch nichts.
 
Laut Manpage erstellt es mindestens zwei Dateien (sog. FIFOs) für die Kommunikation mit dem gestarteten Prozess, nämlich genau unter den Dateinamen, die du mit "-i" und "-o" angibst. Und dafür braucht es Schreibrechte im entsprechenden Verzeichnis.
 
Hallo,

ich habe die letzten Tage ein Update auf einen aktuellen Stand gemacht (siehe Signatur).

Leider erhalte ich jetzt sowohl bei 7170 als auch bei 7141 Folgendes:
Code:
/var/mod/root # phonebook start
Reading AVM's phone book...done.
/var/mod/root # cat /var/cache/phonebook/avm
# AVM's phone book (old)
Beide Boxtypen haben aber das neue Telefonbuch...
Da ich vorher auch schon auf der .57er Firmware war und es funktioniert hat muss sich wohl was an freetz/callmonitor geändert haben...

Hat jemand eine Idee?

wengi
 
ich habe die letzten Tage ein Update auf einen aktuellen Stand gemacht (siehe Signatur).
Welche Revision hast du vorher benutzt? (Bzw. welche Version des Callmonitors war dabei?)

Es gab schon zwei Berichte zu dem Problem; dort ist es aber komischerweise nur sporadisch aufgetreten.

Da ich nur eine Box mit "altem" Telefonbuch habe, sind mir bezüglich weiterer Untersuchung die Hände gebunden. Falls du Interesse hast, das Problem genauer zu untersuchen: Die einzige Datei, die du dir anschauen musst, ist diese hier: https://svn.berlios.de/viewcvs/call.../all/html/callmonitor/fonbuch.txt?view=markup (wird über den gleichen Mechanismus ausgewertet wie das Webinterface von AVM).

Gruß,
Andreas
 
Hi buehmann,

da ich nicht so viel Zeit habe konnte ich nur kurz was testen:

wie oben beschrieben endet ein "phonebook start" in # AVM's phone book (old).
Sobald ich aber über die Webseite gehe kommt das neue Telefonbuch.
Auch wenn ich danach wieder über die Konsole gehe kommt das neue Telefonbuch!
es ergibt sich also die Frage: Wo ist der Unterschied zwischen "phonebook start" auf der Konsole und dem Aufruf über die Webseite?

Leider kann man diesen Test nur einmal durchführen. Danach geht es ja....
Eventuell muss ich mal suchen, wie man das reproduzieren kann (reboot, cache löschen, ...)

wengi
 
Interessant; kannst du ausschließen, dass du irgendeine andere Seite der Weboberfläche bei deinen Tests aufgerufen hast?

Ich hatte zunächst eine Idee, woran es liegen könnte (an dem benötigten "Refresh" der Listen, die abgefragt werden), aber das würde nicht zutreffen, wenn du nicht zufällig die Telefonbuchseite in der normalen Weboberfläche auch aufgerufen hättest. Trotzdem könntest du bei deinen Reproduktionsversuchen auch mal diese Variante der fonbuch.txt testen:
Code:
<? setvariable var:refresh '<? query telcfg:settings/HotDialRefresh ?>' 
?><? setvariable var:refresh '<? query telcfg:settings/Phonebook0/Refresh ?>'
?><? setvariable var:phonebook 
  '<? if eq <? query telcfg:settings/Phonebook/Entry/count ?> 0 old new ?>'
?># AVM's phone book (<? print $var:phonebook ?>)
<? if eq $var:phonebook old
  `<? multiquerytext telcfg:settings/HotDialEntry/list(Number,Name)
	'$12	$13
'  ?>`
  `<? multiquerytext telcfg:settings/Phonebook/Entry/list(Name,Category)
  	'<? multiquerytext telcfg:settings/Phonebook/$11/Number/list(Type,Number,Code,Vanity)
	  	"$23	$12 [$22]
"        ?>'
   ?>`
?># EOF

Andreas
 
Hi,

ich war leider krank. Deswegen jetz erst...

Also das problem ist durch einen Reboot wieder da.
Allerdings ist meine Aussage von oben auch nicht richtig.
Nach dem Reboot liefert auch die Webseite die Einträge des alten Fonbuchs.
Erst wenn man in der AVM Weboberfläche das Telefonbuch anklickt bekommt man die neuen Einträge.

Deinen Code habe ich getestet und es scheint zu funktionieren :D
Direkt nach einem reboot erhalte ich die alte Version nach einem phonebook start.
Danach übermounte ich die fonbuch.txt mit der neuen Version und erhalte nach einem erneuten phonebook start die neue Version.

Bleibt nur die Frage, ob beide Refresh's notwendig sind.
Ich habe aber nicht mehr die Zeit das zu testen (wg. der reboots).

wengi
 
Zuletzt bearbeitet:
Danke für die Rückmeldung. Vermutlich ist nur der zweite Refresh nötig, der erste könnte in den Zweig für das alte Telefonbuch wandern. Es dürfte aber nichts schaden, wenn beide ganz am Anfang stehen. Hoffentlich ist damit das Problem behoben.

Andreas
 
Hallo,

das mit dem Reboot könnte nicht funktionieren weil telnet sich eventuell anders verhält wenn beim Aufruf durch den Callmonitor kein /dev/tty (Passwortabfrage) vorhanden ist. Ich habe jetzt die Sourcen dieses telnet nicht zur Verfügung, aber ich habe vor 10 Jahren mal einen telnet auf Skripting umgebaut und musste doch einiges ändern.

Uups, habe gerade gesehen dass es jetzt funktioniert. Dann ist das aktuelle telnet doch ein bischen anders als früher.

Aber was Anderes noch:
Auf der FBF7050 mit Freetz 1.0 scheint es im Zusammenhang mit dem Callmonitor zu häufigen Hängern zu kommen. Dies ist in diesem Thread und in diesem Thread beschrieben. Der regelmäßige Neustart des Callmonitors scheint zu helfen. Es wäre schön wenn der Fehler im Callmonitor selbst behoben würde.

Grüße,
Emil
 
Zuletzt bearbeitet:
Natürlich wäre ich froh, einen Fehler im Callmonitor beheben zu können, sofern denn einer besteht und ich irgendwelche Anhaltspunkte hätte, wo er zu suchen ist. Wie du aber in den Threads gelesen haben dürftest, beschränkten sich bisher alle Beobachtungen auf etwas Vages in der Art "ab und zu bis häufig Hänger der Box; bei regelmäßigem Neustart des Callmonitors scheint es besser zu werden". Also nicht wirklich hilfreich, zumal man diese Abstürze nicht zuverlässig reproduzieren kann.

Falls du irgendwelche Anhaltspunkte findest, wäre ich dankbar.

Andreas
 
Vielleicht sollte man den Callmonitor schlicht und ergreifend Dauerhaft tracen, bis zum Absturz.

Bei mir übrigens läuft meine Box seit 26 Tagne inklusive Callmonitor durch.
 
Ich weiss dass es schwierig ist das Problem zu finden wenn man es selbst nicht reproduzieren kann. Aber das Problem ist halt auch dass die FBF hinterher nicht mehr ansprechbar ist und man so nur schwer an irgendwelche Diagnosedaten kommt. Zudem nutzen viele die FBF im Produktivbetrieb und da nervt es einfach wenn die Box immer wieder steht, insbesondere wenn andere betroffen sind. Experimente sind da nur im begrenztem Maße möglich.

Aber vielleicht kommt man dem Problem auch durch einen Review näher. Vielleicht bläht sich der Speicher irgendwie auf, oder es wird das Dateisystem vollgeschrieben, ... Diese Anzeichen müssten sich auch auf anderen Boxen nach ein paar Tagen Laufzeit zeigen.

Wenn das alles nichts hilft dann müssen wir halt bei der Restart-Lösung bleiben.

Danke,
Emil
 
Ich habe auch mal eine Mutmaßung beizutragen. Ich habe in letzter Zeit auch öfter mal Stabilitätsprobleme. Meines Erachtens aber erst seit ich im Callmonitor die Pushmailbenachrichtigung für verpasste Anrufe aktiviert habe. Ich habe 6 Listener eingetragen (3x dboxpopup, 1x dboxlcd, 1x WOL und 1xmailmessage). Vor dem Eintrag lief sie mehr als zwei Wochen während meines Urlaubs stabil. Allerdings war da auch nicht viel Traffic auf der Box. Aber am allgemeinen Traffic sollte es ja nicht liegen. Normale Pushmail ist auf 1x pro Tag eingestellt und funktioniert problemlos. Speichernutzung dauerhaft bei 65%.

Gruß Telefonmännchen
 
Ich habe überhaupt keine Benachrichtigung per Email sondern nur einen Eintrag um einen Rechner aufzuwecken und einen um Anrufe auf dem vdr zu melden.

Ist also alles sehr einfach. Trotzdem in der Nacht weder das eine noch das andere aktiviert wurde stand sie am morgen. Aber auch tagsüber blieb sie öfter stehen.

Seit dem Restart des callmonitors läuft sie jetzt bei mir schon 24 h. Das ist zwar noch nicht lange, gibt aber Hoffnung. Vorher passierte es 1-2 mal täglich.
 
Es läuft jetzt schon 2 Tage ohne Hänger. Das sieht ganz gut aus.

Ich habe gesehen dass der Callmonitor größtenteils aus Shell-Skripts besteht. Vielleicht liegt die Ursache ja auch nicht im Callmonitor selbst sondern in der ash.

Bei mir lief in einer älteren ds-mod der Callmonitor über viele Monate ohne Probleme. Wenn ich Zeit finde packe ich mal die alte ash wieder rein und teste damit.
 
Zuletzt bearbeitet:
Hi,

danke für das Feedback. Ja, der Callmonitor ist sogar fast ausschließlich als Shellskript implementiert und reizt diese Sprache ziemlich weit aus. Ein oder zwei Bugs in der busybox-ash (bzw. den sonstigen Unix-Tools in der busybox) sind so durch den Callmonitor schon aufgedeckt worden.

Andreas

PS: Übrigens, falls du genauer in die Implementierung schauen willst, solltest du dir den Code aus dem SVN-Repository besorgen: https://developer.berlios.de/svn/?group_id=5501
In den installierten Dateien fehlen sämtliche Kommentare und die Einrückungen.
 
rawmsg von festen port an festen port senden

Hallo Leute!
Gibt es eine Möglichkeit die aktion rawmsg mit einem festen AUSGEHENDEN port auszuführen?

Hintergrund: Ich habe in meinem Haus ein Automatisierungsystem verbaut wie sie in der Industrie verwendung findet (Speicherprogrammierbare Steuerung -SPS von Siemens). Diese SPS steuert sämtliche Steckdosen, Lampen und Rollläden im Haus an. Ein programm sorgt dafür dass das Licht im Klo eingeschaltet wird wenn ich den Taster dort betätige.
Wenn jetzt z.B. jamand an der Tür klingelt, fangen ausgewählte lampen an zu blinken wenn die Türklingel ausgeschaltet ist. Das möchte ich gerne auch mit eine eingehenden Telefonanruf machen. Es wäre auch denkbar mit einem Telefonanruf mit meiner mobilnummer auf einer bestimmten MSN alle lampen und alle Steckdosen auszuschalten.

Eigentlich habe ich bereits alles dafür. Die Steuerung ist mit einem Ethernetanschluss ausgestattet, über den ich TCP-Verbindungen anlegen und empfangen kann. Bei den Verbindungen muss ich den Port auf dem ich empfangen will angeben. Zusätzlich ist aber auch die Angabe des ausgehenden Ports der Fritzbox nötig. Das wird auch abgeprüft und die Verbindung wird abgewiesen wenn das nicht übereinstimmt.
Die Fritzbox sendet allerdings immer auf einem anderen Port.

Habe ich da irgend eine Möglichkeit?
Vielleicht fällt euch ja was ein.

MFG
Fourier
 
Zuletzt bearbeitet:
Hallo,

erst einmal herzlich willkommen im Forum! Bei netcat kannst du den lokalen Port mit "-p" angeben:
Code:
netcat -p 1234 server 5678
Bei dem einfachen "nc", das standardmäßig auf der Fritzbox ist (in der Busybox) und von rawmsg benutzt wird, gibt es zwar auch den Schalter "-p"; der scheint dort aber bei ausgehenden Verbindungen keine Wirkung zu zeigen. Also: Paket "netcat" in Freetz installieren.

Andreas
 
Status
Für weitere Antworten geschlossen.
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.