Filelog-Dateien aus FHEM heraus bearbeiten?

Begonnen von Dracolein, 13 November 2022, 09:28:59

Vorheriges Thema - Nächstes Thema

Dracolein

Hallo zusammen,

gibt es eine Möglichkeit, FileLog-Dateien aus FHEM heraus zu editieren, also z.B. Zeilen aus einer Datei zu löschen oder hinzu zu fügen?
(Ich hatte mir gestern einen Berechtigungsfehler eingehandelt, weil ich ausserhalb von FHEM mittels Editor eine FileLog Datei geändert hatte)
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

OdfFhem

Eher nicht ... (reopen,) clear und absorb gibt es zur Manipulation.

Manuelles Editieren ist generell immer etwas "schwierig", da die Datei ja ständig durch FHEM aktualisiert werden könnte - Datenverlust im Grunde vorprogrammiert.

Durch welche (genaue) Aktion wurde der Berechtigungsfehler ausgelöst ? Normalerweise ändern sich beim reinen Editieren die Rechte nicht (z.B. vom Prompt oder via Samba).

Jamo

Ich habe mir ein bash shell script (ClearLog.sh) gemacht, mit dem ich die ungewünschten Zeilen raus-greppe #!/bin/bash
cat /opt/fhem/log/fhem.log | grep -av "Cannot fork: Cannot allocate memory" | grep -av "error while requesting" > /opt/fhem/log/fhem.txt
cp /opt/fhem/log/fhem.txt /opt/fhem/log/fhem.log
rm /opt/fhem/log/fhem.txt
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

Dracolein

Zitat von: OdfFhem am 13 November 2022, 10:57:32
Durch welche (genaue) Aktion wurde der Berechtigungsfehler ausgelöst ? Normalerweise ändern sich beim reinen Editieren die Rechte nicht (z.B. vom Prompt oder via Samba).
Ich hatte dazu vohin einen sehr langen Aufsatz getippt und wollte wegen der Fehlersuche hier einen Thread beginnen.
Der DAU sitzt vor dem PC.
Kurz umrissen: meine Logfiles liegen auf einem NAS, welches auf dem Raspi gemountet ist. Klappt seit Jahren ohne Probleme.
Vorgestern hatte ich aus Bequemlichkeit - weil ich grade auf dem NAS-System unterwegs war, einen Schönheitsfehler korrigiert (File Download auf lokales Windows System, Editor, Upload zurück auf NAS).
Das hat natürlich die Benutzerrechte der Datei auf dem NAS geändert.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Otto123

Zitat von: Dracolein am 13 November 2022, 12:03:13
Das hat natürlich die Benutzerrechte der Datei auf dem NAS geändert.
und eventuell die Zeilenumbrüche, die Zeichencodierung ...
Bei einem Logfile vielleicht egal, bei einer Konfigurationsdatei oder einem Skript kann man damit dem System praktisch ein beliebiges, unvorhersehbares Verhalten entlocken. Also sowas von Linux aus tun.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Dracolein

Genau das hab ich sonst immer gemacht. Lokal auf dem Pi mittels Editor.
Wie gesagt, der DAU....  ::)

Okay, weiß ich bescheid. Ich hatte gehofft, es gäbe einen Workaround, um aus FHEMWEB heraus mittels "edit files" z.B. etwas zu tun.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Wernieman

Zitat von: Jamo am 13 November 2022, 11:18:42
Ich habe mir ein bash shell script (ClearLog.sh) gemacht, mit dem ich die ungewünschten Zeilen raus-greppe #!/bin/bash
cat /opt/fhem/log/fhem.log | grep -av "Cannot fork: Cannot allocate memory" | grep -av "error while requesting" > /opt/fhem/log/fhem.txt
cp /opt/fhem/log/fhem.txt /opt/fhem/log/fhem.log
rm /opt/fhem/log/fhem.txt


Warum so umständlich, wenn es mit "sed -i" besser geht? Wie z.B. (ungetestet!):
sed -i -e "/Cannot fork: Cannot allocate memory/d" -e "/error while requesting/d" /opt/fhem/log/fhem.log
Spart Dir X-Pipes und mehrere Copierforgänge .. ALLERDINGS must Du trotzdem im Fehm ein reopen des Logs durchführen
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Jamo

ZitatWarum so umständlich, wenn es mit "sed -i" besser geht?
Weil ich es bis heute nicht besser wusste.
Danke für den Tip, wird geändert!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

Wernieman

OT:
Ich hoffe, ich habe Dein Ziel richtig verstanden und umgesetzt. Deshalb meine Anmerkung: Bitte Testen!
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

betateilchen

auch OT: warum will man sowas überhaupt tun?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

Ein Beispiel hättte ich:  In OWTHERM bspw. wird ab und an (hatte ich schon ewig nicht mehr) bei "Problemen" mit einem Sensor der Wert 85 geliefert, den will man dann im FileLog löschen, weil der in einem Plot stört.

Jamo

ZitatOT:
Ich hoffe, ich habe Dein Ziel richtig verstanden und umgesetzt. Deshalb meine Anmerkung: Bitte Testen!
Getestet und für gut befunden - Ja, ich möchte die ganze Zeile aus dem Filelog löschen.

ZitatWarum möchte man das machen?
Weil man z.B nach dem abspeichern der 99_MyUtils.pm >200 Zeilen mit "...PERL WARNING..." im filelog hat. Da will man nicht immer nach unten scrollen.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

betateilchen

Zitat von: Jamo am 13 November 2022, 20:44:12
Weil man z.B nach dem abspeichern der 99_MyUtils.pm >200 Zeilen mit "...PERL WARNING..." im filelog hat. Da will man nicht immer nach unten scrollen.

Man könnte das FileLog auch so anlegen, dass solche Meldungen, die auf Betriebssystemebene auftreten, erst gar nicht im Logfile landen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jamo

Hallo Betateilchen,
kannst Du mir auch noch sagen wie? Ich sehe nur eine reguläre regexp beim Filelog, und das attribut ignoreRegexp

Beim speichern von der 99_MyUtils.pm (das mir die 200 Einträge erzeugt), sehe ich im EventMonitor "global:FILEWRITE../FHEM/99_MyUtils.pm".

Trotz "attr FileLog ignoreRegexp global:FILEWRITE../FHEM/99_MyUtils.pm" werden diese Meldungen trotzdem gelogged. Hast Du einen Tip?
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

Wernieman

Einfacher Tipp: Dafür sorgen, das Warning nicht auftreten ;)
Es gibt meistens einen Grund für Warning ..... eine Warnung sollte man immer beachten,
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html