Hallo alle zusammen,
ich möchte gerne die Logdatei von FHEM (bei mir fhem-2018-01.log) nach bestimmten Wörtern durchsuchen.
Beispiel: alle Netzwerkunterbrechungen finden, in dem nach dem Wort "Netzwerk" gesucht wird.
Mit grep funktioniert das bei mir nicht. Ich erhalte als Ergebnis eine leer Liste mit der Überschrift "Übereinstimmungen in Binärdatei <filespec>".
Wieso Binärdatei, die Logdateien sind doch Textdateien.
Anweisung 1: grep "Netzwerk" /opt/fhem/fhem-2018-01.log
Anweisung 2: cat /opt/fhem/fhem-2018-01.log | grep "Netzwerk"
Beides geht nicht.
Was muss ich tun, um alle Zeilen mit dem Wort "Netzwerk" angezeigt zu bekommen.
Vielen Dank für Eure Hilfe.
Viele Grüße
Werner
hab's gerade mal schnell ausprobiert:
pi@FHEM /opt/fhem/log $ grep "PRESENCE" fhemlog-2018-01-25.log
2018.01.25 20:51:01 1: UPD FHEM/73_PRESENCE.pm
2018.01.25 20:51:03 1: - change: 73_PRESENCE: following attributes were renamed:
2018.01.25 20:51:03 1: - feature: 73_PRESENCE: new set commands overrideInterval and clearOverride
pi@FHEM /opt/fhem/log $ cat fhemlog-2018-01-25.log | grep "PRESENCE"
2018.01.25 20:51:01 1: UPD FHEM/73_PRESENCE.pm
2018.01.25 20:51:03 1: - change: 73_PRESENCE: following attributes were renamed:
2018.01.25 20:51:03 1: - feature: 73_PRESENCE: new set commands overrideInterval and clearOverride
Ich habe mir dafür einen Alias erstellt!
defmod c_greplog cmdalias greplog .* AS {qx(grep -i \'$EVENT\' log/*.log)}
attr c_greplog room _CmdAlias
Danke für den Tip.
Ich bin leider noch Anfänger und verstehe leider nicht genau, was die erste Zeile bewirkt und wie ich dann Stichworte finden kann.
Kannst Du das für mich Laien bitte weiter ausführen.
Danke
Gruß
Werner
Hallo KernSani,
Bei mir funktioniert das leider nicht, warum auch immer.
Die Wörter kann ich im nano Editor mit <Strg> problemlos finden, also sind sie auch da.
aber eine Zusammenfassung mit grep geht nicht.
Stutzig macht mich, dass von einer Binärdatei die Rede ist und nicht von einer Textdatei.
Gruß
Werner
Gib den Befehl(e) in die Befehlszeile oben ein.
Danach kannst du den alias
greplog <SUCHWORT>
direkt oben in der Befehlszeile eingeben und die Ausgabe erscheint im Browser!
Mit den Logfiles für die Geräte funktioniert grep richtig und gibt die korrekte Liste aus, aber eben nicht mit der FHEM-Logdatei.
Hallo P.A.Trick,
habe ich eingegeben. Ich mache das am WEB frontend am PC
Scheinbar durchsucht greplog auch alle logfiles, aber ich bekomme im Web Frontend keine Ausgabe.
Zur Sicherheit habe ich dann noch einmal den kompletten Pfad /opt/log/*log statt log/*log eingegeben.
Aber es tut sich nichts. Auch nicht bei Wörtern in den Geräte-logfiles, bei denen grep ja funktioniert.
Etwas funktioniert mit der Ausgabe nicht
Gruß
Werner
Zitat von: McShire am 26 Januar 2018, 00:03:15
Mit den Logfiles für die Geräte funktioniert grep richtig und gibt die korrekte Liste aus, aber eben nicht mit der FHEM-Logdatei.
Was sagt
file /opt/fhem/fhem-2018-01.log?
Und was sagt
od --format=x1 --read-bytes=10 /opt/fhem/fhem-2018-01.log?
hallo C. M.
auf file /opt/... kommt die Antwort: /opt/fhem/fhem-2018-01.log: data
auf od --format=x1 ... kommt seltsamerweise die Antwort: Datei oder Verzeichnis nicht gefunden.
Ich habe die Schreibweise mehrfach überprüft. Das Ergebnis ist immer das gleiche
Gruß
Werner
Also eigentlich sollte so etwas kommen:
file /opt/fhem/log/fhem-2018-01.log
/opt/fhem/log/fhem-2018-01.log: ASCII text, with very long lines
Versuch einmal grep -a Netzwerk /opt/fhem/fhem-2018-01.log
...
Das Alias funktioniert jetzt. Man muss nur sehr, sehr lange warten wegen der Dateigrösse.
Aber die Ausgabe ist die gleiche wie bei grep direkt, keine Übereinstimmun gefunden.
:) :) :)
Danke allen für die Tips.
Der letzte war erfolgreich.
grep mit der option -a funktioniert, ich bekomme alle Zeilen mit Datum und Uhrzeit angezeigt, in denen keine Verbindung zu Netatmo aufgebaut werden konnte und das Netzwerk nicht available war.
Die Telekom wird sich freuen.
Gruß an alle
Werner
Zitat von: McShire am 26 Januar 2018, 12:47:32
grep mit der option -a funktioniert
Du solltest trotzdem versuchen rauszufinden, warum dein Log angeblich eine Binärdatei ist. Bei mir ist er das nämlich nicht und ich sehe auch keinen Grund, warum der Logfile plötzlich binary sein sollte.
Zitat von: McShire am 25 Januar 2018, 23:29:03
Anweisung 1: grep "Netzwerk" /opt/fhem/fhem-2018-01.log
Anweisung 2: cat /opt/fhem/fhem-2018-01.log | grep "Netzwerk"
äh ganz sicher das die log Datei wirklich im fhem Ordner direkt liegt und nicht etwa (wie üblich) unterhalb von /opt/fhem/log/ ?
Das sehe ich auch so. Das kann ja auch noch zu anderen Fehlern führen.
Sobald ich etwas gefunden habe, werde ich informieren.
Die Datei liegt im Ordner /opt/fhem/log.
Ich hatte mich beim ersten Beitrag vertan, aber immer in .../log mit der Datei gearbeitet.
In den weiteren Beiträgen hatte ich das korrigiert.
Aber es ist eindeutig eine Binärdatei, darum konnte grep die Vergleichswörter als Text nicht finden, sondern erst mit der option -a (behandle die Binärdatei als Textdatei) korrekte Ergebnisse liefern. Auf -a bin ich selber nicht gekommen, da ich nicht so erfahren bin und die Option im Hilfetexte so nicht gesehen hatte.
Zitat von: McShire am 26 Januar 2018, 13:52:28
Das sehe ich auch so. Das kann ja auch noch zu anderen Fehlern führen.
Sobald ich etwas gefunden habe, werde ich informieren.
Versorge uns doch mal mit
list vom
global- und deinem Filelog-Device.
Bildschirmkopien von global und logfile siehe Dateianhang.
Kann man diese Info auch besser auf andere Art hier in diese Antwort einfügen?
Ein jpg file benötigt viel Speicherplatz
Zitat von: McShire am 26 Januar 2018, 23:43:25
Kann man diese Info auch besser auf andere Art hier in diese Antwort einfügen?
Wie Christop sagt und auch im Post Unbedingt vor dem ersten Post lesen (https://forum.fhem.de/index.php/topic,71806.0.html) dargelegt, bitte
list global
in die Kommandozeile eingeben und das Ergebnis (in code tags - das ist das # über den Smilies) hier posten...
Tut mir leid, wenn ich noch nicht alles richtig verstehe, aber ich lerne hoffentlich dazu und mache es zukünftig besser.
unten die listings noch einmal.
Internals:
DEF no definition
NAME global
NR 1
STATE no definition
TYPE Global
currentlogfile ./log/fhem-2018-01.log
logfile ./log/fhem-%Y-%m.log
Attributes:
autoload_undefined_devices 1
autosave 0
configfile fhem.cfg
logfile ./log/fhem-%Y-%m.log
modpath .
motd 1
statefile ./log/fhem.save
updateInBackground 1
userattr cmdIcon devStateIcon devStateStyle fp_Grundriss icon sortby webCmd webCmdLabel:textField-long widgetOverride
verbose 3
version fhem.pl:15842/2018-01-10
Internals:
DEF ./log/fhem-%Y-%m.log NTFY_BackupRun:.*|fakelog
NAME Logfile
NR 18
NTFY_ORDER 50-Logfile
REGEXP NTFY_BackupRun:.*|fakelog
STATE active
TYPE FileLog
currentlogfile ./log/fhem-2018-01.log
logfile ./log/fhem-%Y-%m.log
READINGS:
2018-01-02 22:51:19 linesInTheFile 0
Attributes:
Zitat von: P.A.Trick am 25 Januar 2018, 23:39:14
Ich habe mir dafür einen Alias erstellt!
defmod c_greplog cmdalias greplog .* AS {qx(grep -i \'$EVENT\' log/*.log)}
attr c_greplog room _CmdAlias
Auch der Alias funktioniert jetzt mit der Option -a zum Durchsuchen meiner Log-Datei.
Ist ein sehr gutes Werkzeug.
greplog .* AS {qx(grep -a \'$EVENT\' /opt/fhem/log/*.log)}
Die Option -i habe ich herausgenommen, sonst ist die Antwortzeit sehr lang.
Zitat von: McShire am 27 Januar 2018, 00:49:33
Auch der Alias funktioniert jetzt mit der Option -a zum Durchsuchen meiner Log-Datei.
Ist ein sehr gutes Werkzeug.
greplog .* AS {qx(grep -a \'$EVENT\' /opt/fhem/log/*.log)}
Die Option -i habe ich herausgenommen, sonst ist die Antwortzeit sehr lang.
Das freut mich! Hier findest du noch ein paar nützliche Alias: https://wiki.fhem.de/wiki/Cmdalias
(https://wiki.fhem.de/wiki/Cmdalias)