March 2, 20251 yr Hallo @ All ich bin so langsam am verzweifeln. Ich habe über Jahre hinweg ein Script geschrieben in Python was Stromkosten eines Garagenkomplex berechnet und dieses auf jede Einzelgarage genau berechnet mit einer Datenbank einfach als .txt Datei. Es Funktioniert Prima hab auch eine einzelne .exe die Local ausführbar ist. Jetzt dachte ich mir ich lass es Testweise mal als Script auf meinen Unraid Server laufen wo man intern über Webbrowser auf den Port zugreift. Selbst das geht ja !!! Problem ist das die .txt Datei (Datenbank) angeblich nicht existiert Pfad zum Script: /mnt/disk1/appdata/Scripte/neu.py ich habe auch schon über chmod 777 /mnt/disk1/appdata/Scripte/neu.py ausgeführt auch die chmod 777 /mnt/disk1/appdata/Scripte/garagendatenbank.txt ausgeführt Starte ich das Script über Userscripte Plugin mit ttyd -p 8080 bash -c "python /mnt/disk1/appdata/Scripte/neu.py; exit" geht es und ist erreichbar aber die Datei garagendatenbank.txt existiert angeblich nicht. Wenn ich aber über das Terminal als angemeldeter root das selbe ausführe: python /mnt/disk1/appdata/Scripte/neu.py Das gleiche Problem !!!! führe ich als Root nur diesen Befehl aus: cd /mnt/disk1/appdata/Scripte chmod +x neu.py danach python /mnt/disk1/appdata/Scripte/neu.py geht alles !!! Als angemeldeter root im Terminal gehe über den Browser auf das Script startet es, nur beim auswählen der Menüfunktion kommt anschließend wieder: Als welcher Benutzer wird UserScripte überhaupt gestartet ? das die Eigentümer Verhältnisse falsch sind ? Ansonsten geht das Programm nur sobald auf die Datenbank zugegriffen werden soll, das heißt es fehlt wem auch immer der UserScript ausführt die Ausführungsrechte ???? Ich möchte mich jetzt nicht hier unterhalten wegen chmod 777 warum und wieso ich denn sowas mache usw... ich habe die rechte vergeben zum testen an was es überhaupt liegt um den fehler zu finden. Ich habe auch versucht dieses Script als Docker zu schreiben aber da hänge ich noch fest das kommt dann vielleicht später außer es möchte jemand für mich machen das es auf Unraid mit XML Datei läuft über ttyd.... (Programm an sich ist völlig Fertig) aber das ist jetzt was anderes. will es erstmal so vollständig zum laufen bekommen. Bitte Helft mir hab bis heute früh um 5 rumprobiert ohne Erfolg. Achtung !!!! Hab eben etwas geteset !!! Habe eben den Run Befehl geändert über User Script in ttyd -p 8085 bash für ein neues leeres Terminal auf Port 8085 dort ist man als root angemeldet, als ich den Befehl ausführte ls -l sind alle Berechtigungen gleich !!! danach startete ich das Script über: root@Miniteufel:/mnt/disk1/appdata/Scripte# python neu.py auf einmal geht es !!! das heißt es hat was mit dem run Befehl zutun, so nenne ich es mal jetzt ttyd -p 8080 bash -c "python3 /mnt/disk1/appdata/Scripte/neu.py; exit" Edited March 2, 20251 yr by Shadowbane
March 2, 20251 yr Mal versucht den absoluten Pfad zur .txt Datei anzugeben im Python Script? 19 minutes ago, Shadowbane said: führe ich als Root nur diesen Befehl aus: cd /mnt/disk1/appdata/Scripte geht alles !!! Als angemeldeter root im Terminal Das schreit danach.
March 2, 20251 yr Author Also es scheint als habe ich nur innerhalb des Verzeichnisses die Rechte zum Ausführen !! über python3 /mnt/disk1/appdata/Scripte/neu.py geht die Garagendatenbank.txt nicht zu öffnen. wechsel ich jetzt als root in das Verzeichnis mit: cd /mnt/disk1/appdata/Scripte python neu.py Funktioniert es über den Browser !!! was muss ich da jetzt ändern ?
March 2, 20251 yr 7 minutes ago, Shadowbane said: was muss ich da jetzt ändern ? Ich weiß doch nicht wie das Python Script aussieht. Auf jeden Fall gehe ich sehr stark davon aus, dass in dem Python Script ein relativer Pfad benutzt wird. I.e "Garagendatenbank.txt" Das funktioniert aber nicht, weil der Ort der Ausführung des Script relevant ist. Die Garagendatenbank.txt befindet sich in /mnt/disk1/appdata/Scripte nicht in /root Daher sollte im Python Script direkt statt "Garagendatenbank.txt" "/mnt/disk1/appdata/Scripte/Garagendatenbank.txt" stehen. Ich hab keine Ahnung von Python und ob's da ne Möglichkeit gibt relative Pfade sauber als absolute Pfade auszugeben. Edited March 2, 20251 yr by Mainfrezzer
March 2, 20251 yr Author Solution Es kann so einfach sein, Mannn Mannn Mannnnnnnnn ttyd -p 8080 bash -c "cd /mnt/disk1/appdata/Scripte/ && python3 neu.py; exit" so lautet jetzt mein befehl unter als Userscript und es geht !!! Vielen Vielen Dank an @Mainfrezzer DANKE für deine Hilfe. dann werd ich mich jetzt nur um die notwendigen Berechtigungen kümmern das es ohne 777 Rechte noch geht !!! Gibt es jemand der mir daraus ein Docker bauen kann wie oben schonmal angesprochen ? Gibt auch ein Trinkgeld :-) Edited March 2, 20251 yr by Shadowbane
March 4, 20251 yr On 3/2/2025 at 11:44 AM, Shadowbane said: Gibt es jemand der mir daraus ein Docker bauen kann wie oben schonmal angesprochen ? Gibt auch ein Trinkgeld 🙂 Du kannst uns ja mal dein bisheriges Dockerfile zeigen, oder ggf. einen neuen Thread dafür aufmachen. Dann können wir dir auch leichter helfen. Da es bei dir ja nur ein simples Skript zu sein scheint, könnte das hier schon reichen (falls dein Skript von 3rd-party libraries abhängt, müsstest du die noch entsprechend installieren) FROM python:3.12 WORKDIR /app ADD . /app CMD ["python", "neu.py"] Das müsstest du im Ordner /mnt/disk1/appdata/Scripte/ als "Dockerfile" abspeichern und dann vom Terminal aus innerhalb des Ordners via "docker build -t name_of_the_docker_image ." das Docker Image erstellen. Im Unraid WebUI lässt sich dann via "Docker -> Add Container" der ein Container hinzufügen. Deutlich eleganter und empfehlenswerter wäre es natürlich, die garagendatenbank.txt nicht direkt im Image reinzukopieren, sondern beim Dockercontainer als /app/garagendatenbank.txt im Container zu mounten.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.