FHEM durch Tippfehler entsorgt ...

Begonnen von Pfriemler, 13 September 2016, 23:21:11

Vorheriges Thema - Nächstes Thema

Pfriemler

Gestern habe ich mal wieder meinen "Posteingang" aufgeräumt (Autocreate-Einträge landen in diesem Raum) und dabei wieder einige ungeklärte IT-Geräte gefunden im Stile

IT_0xxxxxx
die ich, den Umgang mit Wildcards (.*) übend, mal eben schnell über die Tastatur entsorgt habe:

delete IT_0,.*

Ups, ein Komma auf der Tastatur mit erwischt  - und FHEM war tot ...

Beeindruckend, wie man mit einem kleinen Befehl FHEM derart zerlegen kann...

FHEM habe ich über Terminal gestoppt und neu gestartet - und da die massiven "Konfigurationsänderungen" nicht gespeichert waren, war alles wieder beim alten *schweißvonderstirnwisch*





"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Bennemannc

Hallo,

das sollte eigentlich nicht so sein - poste das doch mal in einem Bereich, wo Rudi mitliest. Läßt sich das rekonstruieren? Das ist ja eigentlich eine "gültige" RegExp, von daher würde ich das als Bug bezeichen, wenn das immer so ist.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

betateilchen

Das ist immer so und das Verhalten von fhem ist in diesem Fall völlig korrekt.

Du hast zwar einen Tippfehler gemacht, aber dummerweise fhem damit trotzdem einen syntaktisch richtigen Befehl erteilt, der da lautet

Lösche das device IT_0 UND alle devices, deren Name der regexp .* entsprechen.

Das Ganze nennt sich devspec und ist in der fhem Dokumentation beschrieben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Pfriemler

betateilchen hat schon recht, und FHEM hat sich in der Tat völlig regelkonform verhalten. Mir war das schon klar und auch dass ich das System durch einen Neustart wiederbelebe ... theoretisch - is aber schon schön wenn es praktisch auch geht.

Worüber man nachdenken KÖNNTE: wissentlich wird kaum jemand delete. * eingeben. In diesem Fall ist das wirklich durch einen puren Tippfehler entstanden, ich habe das neben dem Punkt liegende Komma rein versehentlich erwischt. FHEM könnte man also vielleicht dahin härten, den allumfassenden .* wirklich erst nach Rückfrage zuzulassen. Noch hilfreicher wäre eine Rückfrage ab einer bestimmten Zahl betroffener Entities.

Aber das traue ich mich gar nicht offiziell  anzufragen ...

So bleibts dabei, dass ich einfach nur zeigen wollte, was so ein simpler Tippfehler anzurichten vermag, ohne dass ein Bug oder ein Fehlverhalten vorliegt ...

geht nich gips nich

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Muschelpuster

#4
Möge die Macht mit uns sein  8)
Und wir verantwortungsvoll damit umgehen  ;)
Passiert eben - ich habe dienstlich auch schon eine ganze Telefonanlage gelöscht, weil ich abgelenkt wurde. Und das war nicht mit einem Reboot erledigt, weil das sofort auf die Festplatte ging :-[ Und natürlich war die DaSi auch defekt  :'( Zum Glück war es nur unsere eigene Anlage und mein Kollege hatte noch eine DaSi.
Seit dem bin ich ganz vorsichtig im Umgang mit Anfragen mit dem Wortlaut 'Kannst Du mal kurz/schnell (so nebenbei)?'. Nix ist mehr - Eines nach dem Anderen!

mächtige Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

betateilchen

Zitat von: Pfriemler am 14 September 2016, 21:41:46
Worüber man nachdenken KÖNNTE:
den allumfassenden .* wirklich erst nach Rückfrage zuzulassen.

Das funktioniert nicht, weil devspec nicht auf die Kommandozeile begrenzt ist, sondern auch innerhalb vieler Module verwendet wird. Ausserdem wird devspec nicht nur für delete verwendet. Und es gibt durchaus Fälle, in denen man .* braucht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Pfriemler

... konkret: .* nur im Zusammenhang mit delete. Würde der Befehlsinterpreter in delete die Parameter zur Auflösung nach extern übergeben, ließe sich hier eine Ausnahme definieren. Vermutlich wird aber devspec vom Interpreter selbst aufgelöst und die aktualisierte Parameterliste direkt an delete übergeben, so dass dort gar keine Reaktion auf den ursprünglichen Befehl möglich ist, außer die Liste überschreitet einen bestimmten Umfang. Wenn aber delete in einer Iteration über die Paramterliste (also die aufgelöste devspec) aufgerufen wird, geht da gar nichts abzufangen. Aber ich kenne die Interna nicht ansatzweise.

Wie gesag, war nur ne Idee. Offenbar nicht sinnvoll umsetzbar.

Punkt.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

KernSani

Nur noch als Ergänzung... Ich habe über die Diskussion gelächelt, die dazu führte, dass diese Windows-like Abfrage "Willst du das Device xy wirklich löschen" eingeführt wurde. "Wer braucht den sowas?" dachte ich mir. Bis ich gestern mehr als eine Stunde an einem DOIF rumgefummelt habe (natürlich ohne zu sichern - war ja noch nicht fertig), nur nochmal kurz die "device-specific help" aufrufen wollte und FHEM mich fragt: "Willst du das DOIF wirklich löschen?"
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

betateilchen

Man muss nicht jede Sorglosigkeit und jede Konzentrationsschwäche softwareseitig abfangen. Aus Fehlern wird man klug. Auch als schussliger fhem-Anwender.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!