Ereignisprotokoll der FRITZ!Box auf Linux-Server sichern

Hallo,

keine Anmerkung - nur ein Dank. Das Skript ermöglicht mir endlich, neustartunabhängig ein Log der Fritzbox auf meinem kleinen Server zu speichern!

1000 Dank für die Mühe!
 
Danke für die Rückmeldung. Es freut mich sehr, dass mein kleines Skript auch für andere nützlich ist.
 
  • Like
Reaktionen: spamfence
Jetzt taucht doch eine Frage auf: In dem auf dem Server gespeicherten Log meiner 7490 erscheinen nur die Einträge der Ansicht, die in der Oberfläche der Box aktuell ausgewählt ist. - Also 'Alle', 'System' oder 'WLan' usw. Kann ich das umgehen - so dass immer alles protokolliert wird, unabhängig von der Einstellung in der FritzBox?
 
Dazu muß "logger:settings/filter" auf "0" gesetzt sein (oder werden), was bei der Verwendung der "query.lua" nicht möglich ist. Man müßte also zuvor noch einen passenden Aufruf der "syslog.lua" ausführen und den "filter"-Parameter dabei korrekt setzen (am besten schneidet man mal den Aufruf der Seite mit den Developer-Tools des eigenen Browsers mit, damit man die Abläufe da versteht).
 
Ok, weiter oben habe ich gelesen, dass syslog.lua nicht mehr funktioniert. Jenseits dessen stecke ich da nicht tief genug drin. ;-)

Was anderes: Gibt es einen Aufruf von außen, mit dem ich das FritzBox interne Log leeren kann? Wenn einmal die Woche das Log auf dem Server rotiert hätte ich ja ansonsten beim nächsten Aufruf des Skripts das olle zeug wieder enthalten.
 
Da steht aber nicht, daß "syslog.lua" generell nicht mehr existiert ... und auch das Löschen funktioniert (immer noch) über diese Seite. Zwar erfolgt der Aufruf jetzt über die "data.lua" (das muß auch ein POST-Request sein, womit z.B. das "wget" der BusyBox schon mal überfordert wäre) mit dem Parameter "page=log", aber das endet trotzdem in der "syslog.lua".

Deshalb schrieb ich ja auch davon, daß man sich die Abläufe mit dem Browser genauer ansehen kann/soll/muß.

Jedenfalls landet so ein Aufruf mit "page=log" dann am Ende auch in der "/usr/www/avm/system/syslog.lua" im Dateisystem und dort ist dann auch (in Lua) die Behandlung des Filters ebenso zu sehen, wie das Löschen der bisher gespeicherten Ereignisse.
 
Für das Problem, dass der in der Web-Oberfläche ausgewählte Filter auch auf fritz-syslog.sh wirkt, habe ich leider keine schnelle Lösung. Der Aufruf
Code:
https://fritz.box/system/syslog.lua?tab=aus
den ich früher dazu verwendet habe hat seit FRITZ!OS-Version 6.80 nicht mehr die gewünschte Wirkung.
Dasselbe gilt für die Löschfunktion. Auch der dazu in Release 0.6 des Skripts noch verwendete Aufruf
Code:
https://fritz.box/system/syslog.lua?delete=1
ist beim aktuellen FRITZ!OS wirkungslos.

Es bleibt wohl wirklich nur, den Dialog zwischen Browser und Fritz-Weboberfläche zu analysieren. Ich versuche mal die Zeit dafür zu finden. Versprechen kann ich nichts ...
 
Hey
Ich find die Lösung super, gibt es schon eine aktuelle Version für OS-6.90?
Gruß und Dank
 
Wieso aktuelle Version? Bei mir läuft das Skript auch mit der aktuellen Firmware tadellos...
 
Hallo rudolf32,
auch bei mir funktioniert das Skript mit der Version 6.90 genauso wie mit der vorherigen Fritz!OS-Version.
Von daher sehe ich jetzt keinen Bedarf für eine Aktualisierung.
Hat Deine Frage einen bestimmten Grund?
VG T.
 
Das Skript lief bis 19.01.2018 bzw. 20.01.2018 sehr stabil und sauber. Seitdem erhalte ich immer eine Fehlermeldung:
Code:
error: Invalid character
.mq_log|.[]|._node? // .[0]
                  ^
1 compile error
Ich habe werder ein Update der Fritz-Box gemacht noch ein Update des Server, auf dem dieses Skript als cronjob läuft. Jemand eine Idee?
 
Das ist merkwürdig.
Der String ".mq_log|.[]|._node? // .[0]" ist der filter string für jq, aber die Fehlermeldung passt nicht zu jq.
Wenn ich jq absichtlich einen syntaktisch fehlerhaften filter string verfüttere, bekomme ich völlig anders aussehende Fehlermeldungen, z.B.:
Code:
ts@xenon:~> jq -r '.mq_log|.[]|._node§//.[0]'
jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
.mq_log|.[]|._node§//.[0]
jq: 1 compile error
Das sieht fast so aus, als ob jq bei Dir gegen ein anderes Kommando ausgetauscht worden wäre.

Was ergeben denn die Kommandos
Code:
which jq
und
Code:
jq --help
?
 
Code:
jq --help
Code:
/usr/bin/jq

Code:
jq --help
Code:
jq - commandline JSON processor [version 1.3]
Usage: jq [options] <jq filter> [file...]

For a description of the command line options and
how to write jq filters (and why you might want to)
see the jq manpage, or the online documentation at
http://stedolan.github.com/jq
 
Hm, ok, Du hast eine erheblich ältere Version von jq (1.3) als ich. (1.5)
Womöglich versteht die den Fragezeichen-Operator noch nicht.
Probier doch mal:
Code:
jq -r '.mq_log|.[]|._node?//.[0]'  /dev/null
Dann wissen wir's genau.

Wenn es das ist, könntest Du den Operator elliminieren, indem Du einen der beiden Filterausdrücke
Code:
'.mq_log|.[]|._node'
oder
Code:
'.mq_log|.[]|.[0]'
einsetzst. Welcher der beiden bei Dir funktioniert, musst Du ausprobieren. (Nichts anderes tut ja das Fragezeichen.)

Offen wäre dann immer noch das Rätsel, warum es vorher funktioniert hat.
 
In der Tat ein Mysterium, warum es plötzlich nicht mehr funktioniert. Ich habs jetzt so gelöst, das läuft wieder:
Code:
jq -r '.mq_log|.[]|.[0]'
 
Hallo
das ganze ist ja schon etwas älter hier und vieleicht nicht mehr Aktuell.
FB 7490 mit Labor(=> 7.08), Wie kann ich das Ereignislog manuell auf meinem Windows PC sichern?
 
Hallo HorschtG,
für manuelle Sicherung auf einem Windows-PC bist Du hier im falschen Thread.
Hier geht's um automatische Sicherung auf einem Linux-Server.
 
Neu - jetzt auch mit Docker! :)

Ich habe das Skript jetzt von meiner guten alten Opensuse-Maschine auf mein QNAP NAS portiert und es dazu in einen Docker-Container verpackt. Läuft prima!

Dabei hat sich noch eine minimale Änderung ergeben: Die Version von jq in Alpine Linux, das ich als Basis für den Container nutze, mag den ?-Operator nicht. Ich habe deshalb den jq-Filter so angepasst, dass er stattdessen den äquivalenten try-Operator verwendet.
Die neue Fassung sowie mein Wrapper-Skript FBgetlog.sh und mein Dockerfile habe ich soeben am Ausgangsposting hochgeladen.

Zur Benutzung:
  • Den Container baut man ganz normal mit
    Code:
    docker build -t fritz-syslog:latest .
  • Starten tut man ihn mit
    Code:
    docker run --rm -v <dstdir>:/data fritzlog
    wobei <dstdir> das Verzeichnis ist, wo das Log abgelegt werden soll.
  • Vorher sollte man in <dstdir> eine Datei
    Code:
    .fritzlogrc
    ablegen, in der mindestens eine Zeile
    Code:
    PASSWORD=dasfritzboxpasswort
    steht. (Weitere mögliche Einträge sind FBgetlog.sh zu entnehmen.)
Viel Spaß!
 
Das war im übrigen mein Abschiedsposting. Zukünftig bin ich nicht mehr hier im Forum anzutreffen.
 
Hallo zusammen
Bin neu hier und ich weiß dieser Thread ist etwas älter. Habe das Script aus dem Anfangspost auf einem Raspberry Pi laufen und es funktioniert auch soweit. Leider habe ich aber das Problem das die Einträge nicht angehängt werden sondern jedes mal überschrieben werden. Folge ist das bei einem Neustart der Fritte beim nächsten Abruf alles gelöscht wird und genauso wie in der Fritte nur die aktuellen Einträge stehen. Habe ich hier eine zu tätigenden Einstellung übersehen oder ist das so gewollt?
Mein Ziel war eine sehr instabile Konstellation aus LTE-Stick und Fritzbox 4020 endlich zumindest Fehlermäßig zu erfassen und so evtl. den entscheidenden Fehler zu finden.
Ich hoffe ihr könnt mir hier weiterhelfen.

Grüße Michael
 
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.