FHEM Forum

FHEM - Hardware => Server - Linux => Thema gestartet von: FunkOdyssey am 23 Januar 2018, 16:57:05

Titel: Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: FunkOdyssey am 23 Januar 2018, 16:57:05
Hallo, ich suche einen pfiffigen Linux-Profi, der mir einen Tipp geben kann. :-)

Ich möchte folgendes erreichen:
- fhem.cfg prüfen, ob "attr global nofork 1" gesetzt ist.
- wenn "attr global nofork 0", dann mit "attr global nofork 1" ersetzen.
- wenn nicht vorhanden, dann "attr global nofork 1" hinzufügen.

Das hier ist nur die halbe Lösung:
#!/bin/sh
cd /opt/fhem
if ! grep -q "attr global nofork 1" "fhem.cfg"; then
   sed -i '/attr global nofork 0/c\attr global nofork 1' fhem.cfg
fi
perl fhem.pl fhem.cfg


Mein Probleme:
- Füge ich mit echo hinzu, so habe ich die Zeile irgendwann mehrfach in der fhem.cfg.
- Ersetze ich mit sed, so werden nicht vorhandene Zeilen halt nicht berücksichtigt.

Habt ihr eine Idee?

Vielen Dank.
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: JoWiemann am 23 Januar 2018, 17:52:36
Hm, das externe verändern der fhem.cfg führt erst nach einem Neustart zum Erfolg. Warum lässt Du das Fhem nicht selber machen.

Hier ein List, das etwas ähnliches macht:


Internals:
   DEF        global:INITIALIZED attr global motd none
   NAME       Dev_Motd
   NOTIFYDEV  global
   NR         721
   NTFY_ORDER 50-Dev_Motd
   REGEXP     global:INITIALIZED
   STATE      2018-01-17 19:23:25
   TYPE       notify
   READINGS:
     2018-01-17 19:22:47   state           active
Attributes:
   room       System


Gruß Jörg
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: Otto123 am 23 Januar 2018, 17:55:49
Hi,

wenn Du einfach diesen Quatsch unterlässt  ;D ;D ;D und in der FHEM Kommandozeile
attr global nofork 1 und enter eingibst ist das Ziel erreicht.

Leider zu einfach ...

Otto
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: FunkOdyssey am 23 Januar 2018, 19:46:48
He he. Ich kenne eure Einstellung dazu. Ich habe die gleiche Meinung. Ich bearbeite die fhem.cfg nie direkt. Hier geht es aber nicht anders, weil ich das Attribut halt vor dem Fhem-Start setzen muss. Fhem ist noch nicht aktiv. Somit geht Telnet auch noch nicht.
Ich muss Fhem halt im Vordergrund laufen lassen.
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: Otto123 am 23 Januar 2018, 19:50:28
ok sorry, so hatte ich das nicht verstanden  :D  :-[
Und fhem ist "neu"? Sicher nicht ....  :o
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: JoWiemann am 23 Januar 2018, 20:14:08
Hm, ich habe das hier gefunden: https://www.computerbase.de/forum/showthread.php?t=1441702

Vielleicht ist ja eine Inspiration dabei.

Grüße Jörg
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: betateilchen am 23 Januar 2018, 21:04:08
wenn es nur darum geht, überhaupt eine Zeile mit attr global nofork 1 zu haben, würde ich gar nicht erst danach suchen, sondern einfach zwei Dinge tun:



sed -i /nofork/d fhem.cfg
echo attr global nofork 1 >> fhem.cfg


Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: FunkOdyssey am 23 Januar 2018, 21:20:36
Danke euch. Suchen - Zeile löschen und neu anhängen ist super. Das wird es sein. Merci.
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: justme1968 am 23 Januar 2018, 21:22:36
hinten anhängen reicht völlig:echo attr global nofork 1 >> fhem.cfg

das letzte setzen des attributs 'gewinnt'
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: FunkOdyssey am 23 Januar 2018, 21:39:40
Nee, die Hoffnung hatte ich auch. Bis mir dann ein paar dieser Zeilen aufgefallen ist.
Ich kann das aber gerne mal in einer ruhigen Minute ausprobieren.
Titel: Antw:Zeile in fhem.cfg per sed ersetzen bzw. ggfls. hinzufügen
Beitrag von: betateilchen am 24 Januar 2018, 12:58:07
Zitat von: FunkOdyssey am 23 Januar 2018, 21:39:40
Nee, die Hoffnung hatte ich auch. Bis mir dann ein paar dieser Zeilen aufgefallen ist.

Ja, aber das stört nicht, denn wie Andre schon sagte: das letzte Setzen des Attributes bestimmt den Inhalt des Attributes. Und die globalen Attribute werden sehr früh im Startprozess von FHEM gesucht und gesetzt, bevor irgendwelche davon abhängige Aktionen ausgeführt werden. Egal, an welcher Stelle (bezogen auf die Reihenfolge) sie in der Konfiguration auftauchen.

Spätestens nach dem nächsten "save config" sind ggf. doppelte Einträge dann verschwunden und die Attribute sollten alle hintereinander stehen.