sytem.Exec und "&"

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Benutzeravatar
blackhole
Beiträge: 3718
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 586 Mal

Re: sytem.Exec und "&"

Beitrag von blackhole » 20.07.2021, 10:19

frd030 hat geschrieben:
19.07.2021, 21:22
Man kann das auch testen, indem man eine Datei schreibt und zurückliest.

Wenn du einmal darüber nachdenkst, wirst du feststellen, dass das im Fehlerfall zu den gleichen Problemen führen kann.
Insofern kann man sich das sparen und gleich den gewünschten Kram auf den Stick schreiben.

frd030 hat geschrieben:
19.07.2021, 21:22
Du mußt Dich dazu natürlich auch mit Shellprogrammierung auseinandersetzen - es gibt nichts umsonst...

Ich würde das nicht ganz so hoch aufhängen.

Ein einfacher, schneller Weg wäre zum Beispiel das einmalige Erstellen einer Datei auf dem USB-Stick ...

Code: Alles auswählen

touch /media/usb1/stickda

... deren Existenz dann ganz einfach in einem Einzeiler überprüft wird, bevor der andere Kram ausgeführt wird:

Code: Alles auswählen

if [ -f /media/usb1/stickda ]; then echo "Der andere Kram."; fi

Den Einzeiler dann via system.Exec() abschicken. Den Aufruf mittels Ampersand in den Hintergrund zu legen ist sinnvoll, da so auch ReGa-Verzögerungen bei eventuellen Schreibproblemen auf dem Stick verhindert werden.


Die grundsätzliche Funktion kann beispielsweise hiermit schnell getestet werden:

Code: Alles auswählen

var Daten = "Wichtige Daten";
var Datum = "Heute";
var Device = "Kaffeemaschine";
system.Exec("if [ -f /media/usb1/stickda ]; then echo " #Device #"  "  #Daten  #"  "  #Datum  #" >>/media/usb1/datensammlung; fi &");

Mit dem vom TE angegebenen Skriptschnippselbeispiel sähe das dann in etwa so aus:

Code: Alles auswählen

system.Exec("if [ -f /media/usb1/stickda ]; then echo " #device.Name() #"  "  #Daten  #"  "  #Datum  #" >>/media/usb1/XXXXXX"; fi &");

Man kann natürlich auch prüfen ob ein Stick (und nicht eine definierte Datei auf dem Stick) vorhanden ist. In diesem Fall finde ich aber die Prüfung auf Existenz einer Datei auf dem Stick sinnvoller, da zumindest eine Teilfunktion des Sticks mitgeprüft wird und eben nicht nur die reine Existenz des Sticks. Mehr Aufwand würde ich für solch eine einfache Aufgabe dann aber auch nicht treiben wollen, auch wenn natürlich deutlich mehr geht.

Antworten

Zurück zu „HomeMatic allgemein“