NEWS
Mit exec in Dateisystem schreiben
-
Hallo,
ich habe einige Scripte die mit exec Dateien schreiben und Ordner anlegen.
Alle so, dass wenn der Ordner gelöscht wird mkdir den Ordner neu anlegt.Landet dann ja alles in /opt/iobroker/node_modules/iobroker.javascript
Nun habe ich einen Fall, wo der Ordner bei einem Update von Javascript nicht gelöscht werden darf.
Deshalb würde ich gerne in opt/iobroker schreiben.
Da hat exec aber schnbar keine Rechte?
Zumindest hat mkdir /opt/iobroker/xyz keinen ErfolgEdit
Klappt doch. War scheinbar ein Tippfehler. -
Hallo,
ich habe einige Scripte die mit exec Dateien schreiben und Ordner anlegen.
Alle so, dass wenn der Ordner gelöscht wird mkdir den Ordner neu anlegt.Landet dann ja alles in /opt/iobroker/node_modules/iobroker.javascript
Nun habe ich einen Fall, wo der Ordner bei einem Update von Javascript nicht gelöscht werden darf.
Deshalb würde ich gerne in opt/iobroker schreiben.
Da hat exec aber schnbar keine Rechte?
Zumindest hat mkdir /opt/iobroker/xyz keinen ErfolgEdit
Klappt doch. War scheinbar ein Tippfehler.@David-G. Du solltest die Daten nur unter
files/0_userdata.0speichern
Dort Dein Verzeichnis anlegen mit Files/Dateien und dort eine Datei(test.txt) im Browser hochladen. Dann dieses Verzeichnis für Deine Daten nutzen/opt/iobroker/iobroker-data/files/0_userdata.0/DEINVERZEICHNIS/Daten -
@David-G. Du solltest die Daten nur unter
files/0_userdata.0speichern
Dort Dein Verzeichnis anlegen mit Files/Dateien und dort eine Datei(test.txt) im Browser hochladen. Dann dieses Verzeichnis für Deine Daten nutzen/opt/iobroker/iobroker-data/files/0_userdata.0/DEINVERZEICHNIS/Daten -
Die Ordner finde ich im Backup, nicht aber die Dateien.
Wurden eben auch nicht offiziell an den iobroker übergeben. -
@David-G. Wie schreibst du die Dateien ins Verzeichnis?
Wurden eben auch nicht offiziell an den iobroker übergeben.
bedeutet?

-
Schreibe erst mit echo eine html Datei.
Dann schreibt WeasyPrint (gestartet per exec) daraus eine PDF. -
@David-G. Ist das ein javascript Programm,stell es bitte rein,damit ich es nachvollziehen kann.
-
Sehe grad, dass mir der iobroker unter Dateien keine Unterordner anzeigt.
Werden diese evtl nicht unterstützt?Schreibe in
/opt/iobroker/iobroker-data/files/0_userdata.0/abc/xyzDas ist der Script Part

-
@David-G. Teste mal bitte auf dem System
sudo -u iobroker which weasyprint sudo -u iobroker weasyprint --versioniobroker@iobroker:~$ sudo -u iobroker which weasyprint /usr/local/bin/weasyprint iobroker@iobroker:~$ sudo -u iobroker weasyprint --version WeasyPrint version 62.3 iobroker@iobroker:~$(Ist ein recht altes System, damals wusste ich nicht, dass man den User nicht iobroker nennen sollte....)
-
iobroker@iobroker:~$ sudo -u iobroker which weasyprint /usr/local/bin/weasyprint iobroker@iobroker:~$ sudo -u iobroker weasyprint --version WeasyPrint version 62.3 iobroker@iobroker:~$(Ist ein recht altes System, damals wusste ich nicht, dass man den User nicht iobroker nennen sollte....)
-
iobroker@iobroker:~$ sudo -u iobroker which weasyprint /usr/local/bin/weasyprint iobroker@iobroker:~$ sudo -u iobroker weasyprint --version WeasyPrint version 62.3 iobroker@iobroker:~$(Ist ein recht altes System, damals wusste ich nicht, dass man den User nicht iobroker nennen sollte....)
@David-G. sagte in Mit exec in Dateisystem schreiben:
Ist ein recht altes System
Und weasyprint ist da auch nicht 'ordentlich' installiert.
Gibt es über das Debian-Repo. -
iobroker@iobroker:~$ sudo -u iobroker which weasyprint /usr/local/bin/weasyprint iobroker@iobroker:~$ sudo -u iobroker weasyprint --version WeasyPrint version 62.3 iobroker@iobroker:~$(Ist ein recht altes System, damals wusste ich nicht, dass man den User nicht iobroker nennen sollte....)
-
@David-G. Lass mal den kompletten Befehl der mit exec geschickt wird ausgeben und stell ihn rein. Danke.
Habe eben mal manuell Daten eine Ebene höher nach /opt/iobroker/iobroker-data/files/0_userdata.0/xyz kopiert. Landen auch nicht im Backup.
@MCU sagte in Mit exec in Dateisystem schreiben:
Lass mal den kompletten Befehl der mit exec geschickt wird ausgeben und stell ihn rein. Danke.
Inhalt von echo entfernt
cd /opt/iobroker/iobroker-data/files/0_userdata.0/abc/xyz && echo '' > htmlc6.html && echo '' > htmlc5.html && echo '' > htmletiketten.html && weasyprint -p htmlc6.html c6_14_02_2026_00_23.pdf && weasyprint -p htmlc5.html c5_14_02_2026_00_23.pdf && weasyprint -p htmletiketten.html etiketten_14_02_2026_00_23.pdf && rm -f htmlc5.html htmlc6.html htmletiketten.html *.xls *.xlsx@Thomas-Braun sagte in Mit exec in Dateisystem schreiben:
Und weasyprint ist da auch nicht 'ordentlich' installiert.
Gibt es über das Debian-Repo.Wie werde ich das aktuelle Los? Dann installier ich es noch sauber
@MCU sagte in Mit exec in Dateisystem schreiben:
Was sagt denn
Copy to Clipboard
grep -n '^iobroker:' /etc/passwdLast login: Sat Feb 14 00:14:54 2026 from 192.168.22.206
iobroker@iobroker:~$ grep -n '^iobroker:' /etc/passwd
25:iobroker:x:1000:1000:iobroker,,,:/home/iobroker:/bin/bash
iobroker@iobroker:~$ -
Habe eben mal manuell Daten eine Ebene höher nach /opt/iobroker/iobroker-data/files/0_userdata.0/xyz kopiert. Landen auch nicht im Backup.
@MCU sagte in Mit exec in Dateisystem schreiben:
Lass mal den kompletten Befehl der mit exec geschickt wird ausgeben und stell ihn rein. Danke.
Inhalt von echo entfernt
cd /opt/iobroker/iobroker-data/files/0_userdata.0/abc/xyz && echo '' > htmlc6.html && echo '' > htmlc5.html && echo '' > htmletiketten.html && weasyprint -p htmlc6.html c6_14_02_2026_00_23.pdf && weasyprint -p htmlc5.html c5_14_02_2026_00_23.pdf && weasyprint -p htmletiketten.html etiketten_14_02_2026_00_23.pdf && rm -f htmlc5.html htmlc6.html htmletiketten.html *.xls *.xlsx@Thomas-Braun sagte in Mit exec in Dateisystem schreiben:
Und weasyprint ist da auch nicht 'ordentlich' installiert.
Gibt es über das Debian-Repo.Wie werde ich das aktuelle Los? Dann installier ich es noch sauber
@MCU sagte in Mit exec in Dateisystem schreiben:
Was sagt denn
Copy to Clipboard
grep -n '^iobroker:' /etc/passwdLast login: Sat Feb 14 00:14:54 2026 from 192.168.22.206
iobroker@iobroker:~$ grep -n '^iobroker:' /etc/passwd
25:iobroker:x:1000:1000:iobroker,,,:/home/iobroker:/bin/bash
iobroker@iobroker:~$@David-G. Versuch mal diesen Befehl mit exec.
runuser -u iobroker -- bash -lc "cd /opt/iobroker/iobroker-data/files/0_userdata.0/abc/xyz && echo '' > htmlc6.html && echo '' > htmlc5.html && echo '' > htmletiketten.html && /usr/local/bin/weasyprint -p htmlc6.html c6_14_02_2026_00_23.pdf && /usr/local/bin/weasyprint -p htmlc5.html c5_14_02_2026_00_23.pdf && /usr/local/bin/weasyprint -p htmletiketten.html etiketten_14_02_2026_00_23.pdf && rm -f htmlc5.html htmlc6.html htmletiketten.html *.xls *.xlsx"Die Dateien müssen dann unter Dateien/Files im Browser unter 0_userdata.0 oder Benutzerdateien im Ordner abc/xyz sichtbar sein.
-
Wenn man Linux-Systemfunktionen ("exec") zum Schreiben von Dateien nutzt, sollte man ÜBERHAUPT NICHT in den Verzeichnisbaum von iobroker schreiben ... außer man ruft per exec z. B.
iob file write ....auf ...
Die Datei in einem Verzeichnis außerhalb der Überwachung von iobroker erzeugen, und danach mit iob file write in ein iobroker Verzeichnis zu transferieren ist aber erlaubt ...
iobroker führt eine Datenbank über die Dateien im eigenen Verzeichnisbaum, und wenn man in diesen Verzeichnisbaum "unter dem Radar" Dateien hinenschiebt, sorgt das nur für Ärger (z. B. dass sie nicht "im Backup landen")....
-
Habe eben mal manuell Daten eine Ebene höher nach /opt/iobroker/iobroker-data/files/0_userdata.0/xyz kopiert. Landen auch nicht im Backup.
@MCU sagte in Mit exec in Dateisystem schreiben:
Lass mal den kompletten Befehl der mit exec geschickt wird ausgeben und stell ihn rein. Danke.
Inhalt von echo entfernt
cd /opt/iobroker/iobroker-data/files/0_userdata.0/abc/xyz && echo '' > htmlc6.html && echo '' > htmlc5.html && echo '' > htmletiketten.html && weasyprint -p htmlc6.html c6_14_02_2026_00_23.pdf && weasyprint -p htmlc5.html c5_14_02_2026_00_23.pdf && weasyprint -p htmletiketten.html etiketten_14_02_2026_00_23.pdf && rm -f htmlc5.html htmlc6.html htmletiketten.html *.xls *.xlsx@Thomas-Braun sagte in Mit exec in Dateisystem schreiben:
Und weasyprint ist da auch nicht 'ordentlich' installiert.
Gibt es über das Debian-Repo.Wie werde ich das aktuelle Los? Dann installier ich es noch sauber
@MCU sagte in Mit exec in Dateisystem schreiben:
Was sagt denn
Copy to Clipboard
grep -n '^iobroker:' /etc/passwdLast login: Sat Feb 14 00:14:54 2026 from 192.168.22.206
iobroker@iobroker:~$ grep -n '^iobroker:' /etc/passwd
25:iobroker:x:1000:1000:iobroker,,,:/home/iobroker:/bin/bash
iobroker@iobroker:~$@David-G. sagte in Mit exec in Dateisystem schreiben:
Wie werde ich das aktuelle Los?
Wie hast du es denn hingezirkelt?
-
Wenn man Linux-Systemfunktionen ("exec") zum Schreiben von Dateien nutzt, sollte man ÜBERHAUPT NICHT in den Verzeichnisbaum von iobroker schreiben ... außer man ruft per exec z. B.
iob file write ....auf ...
Die Datei in einem Verzeichnis außerhalb der Überwachung von iobroker erzeugen, und danach mit iob file write in ein iobroker Verzeichnis zu transferieren ist aber erlaubt ...
iobroker führt eine Datenbank über die Dateien im eigenen Verzeichnisbaum, und wenn man in diesen Verzeichnisbaum "unter dem Radar" Dateien hinenschiebt, sorgt das nur für Ärger (z. B. dass sie nicht "im Backup landen")....
@MartinP sagte in Mit exec in Dateisystem schreiben:
iobroker führt eine Datenbank über die Dateien im.....
Sowas hatte ich auch in Erinnerung. Deshalb hab ich oben gemeint, dass am iob vorbei geschrieben.
@Thomas-Braun sagte in Mit exec in Dateisystem schreiben:
Wie hast du es denn hingezirkelt?
Ja wenn ich das mal wüsste.
Das ist ein System aus der Zeit wo ich mit iob angefangen hab und alles Stumpf nach irgendwelchen Anleitungen gemacht hab.@mcu
Hast du die Dateien in deinen Backup auch einfach per Script, Dateiexplorer etc in den Ordner geschoben?Edit
echo "<html><body><h1>Test</h1></body></html>" | weasyprint - /dev/shm/temp.pdf && iobroker file write /dev/shm/temp.pdf 0_userdata.0/FGB/test.pdf && rm /dev/shm/temp.pdfScheint gut zu klappen.
-
@MartinP sagte in Mit exec in Dateisystem schreiben:
iobroker führt eine Datenbank über die Dateien im.....
Sowas hatte ich auch in Erinnerung. Deshalb hab ich oben gemeint, dass am iob vorbei geschrieben.
@Thomas-Braun sagte in Mit exec in Dateisystem schreiben:
Wie hast du es denn hingezirkelt?
Ja wenn ich das mal wüsste.
Das ist ein System aus der Zeit wo ich mit iob angefangen hab und alles Stumpf nach irgendwelchen Anleitungen gemacht hab.@mcu
Hast du die Dateien in deinen Backup auch einfach per Script, Dateiexplorer etc in den Ordner geschoben?Edit
echo "<html><body><h1>Test</h1></body></html>" | weasyprint - /dev/shm/temp.pdf && iobroker file write /dev/shm/temp.pdf 0_userdata.0/FGB/test.pdf && rm /dev/shm/temp.pdfScheint gut zu klappen.
Ich würde nur davon absehen, direkt auf ein Gerät wie /dev/shm/ zu schreiben. Verwende /tmp/ für sowas.
