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.
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
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
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.
ok sorry, so hatte ich das nicht verstanden :D :-[
Und fhem ist "neu"? Sicher nicht .... :o
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
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
Danke euch. Suchen - Zeile löschen und neu anhängen ist super. Das wird es sein. Merci.
hinten anhängen reicht völlig:echo attr global nofork 1 >> fhem.cfg
das letzte setzen des attributs 'gewinnt'
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.
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.