Python Skript ausführen

Status
Für weitere Antworten geschlossen.

chries89

Benutzer
Mitglied seit
12. Dez 2019
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Hallo in die Runde,

ich bin seit Anfang des Monats Besitzer der DS718+ und wollte nun ein Python Skript auf dieser Ausführen. Bestenfalls über den Aufgabenplaner, sodass das Skript einmalig durchläuft und von der DSM gestartet wird und nicht mit for und while schleifen die DSM "belastet".

Das Skript besitzt die Funktion, von eine URL CSV Daten zu ziehen und diese dann in verschiedene SQL Tabellen auf einen Netzwerk-Fremden Server zu schieben. Dies funktioniert tadellos, wenn ich das Skript von meinen Mac aus starte.

Zur DSM:
Ich habe alle notwendigen Pakete installiert sowie Python 3 und die zugehörigen Python Frameworks auf der DSM installiert (Bspw. Pandas).

Zur Frage:
Nun weiß ich leider nicht, wie ich das Skript auf der DSM starten kann. Ein längeres "googeln" führte leider auch nicht zum erfolg.

Nachfolgende "Benutzerdefinierte Skripte" habe ich getestet:

/usr/local/bin/python3.5/volume1/Blackbox/importer/cmx_live_impoerter_web.py >> /volume1/Software/error.txt>>/volume1/Blackbox/importer/error/error.txt

cd /volume1/Blackbox/importer
/usr/local/bin/python3 cmx_live_impoerter_web.py


Keines der beiden führte wahrscheinlich die Datei aus. Ich erhielt auch keine Fehlermeldung oder ähnliches.


Es wäre großartig, wenn ihr mir hier weiterhelfen könntet und mir sagen würdet, wie man ein py-Skript ausführen kann.


Beste Grüße und danke für eure Unterstützung!
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
1
Punkte
38
Hi,

das ist der richtige Ansatz
cd /volume1/Blackbox/importer
/usr/local/bin/python3 cmx_live_impoerter_web.py
kann eigentlich dann nur an fehlenden Rechten liegen; Wie hast das Skript erstellt? Kopiert? Wer führt es hier "/volume1/Blackbox/importer" aus?
Der Aufgabenplaner eignet sich nicht direkt zum einrichten. Du beginnst auf der Konsole; funktioniert das dort, kannst du die Aufgabe erstellen.
Was für eine Ausgabe bekommst du hier:
Rich (BBCode):
cd /volume1/Blackbox/importer && /usr/local/bin/python3 cmx_live_impoerter_web.py

Generell, hast du Python von Synology installiert prüft du erst mal ab ob es auch antwortet:
admin@DSM62:~#
Rich (BBCode):
python3 -V
Python 3.5.1

dann schaust du nach wo die binarys liegen:
admin@DSM62:~#
Rich (BBCode):
which python3
/usr/local/bin/python3

Stimmt soweit:D ein Beispiel:
Diese print Ausgabe speichere ich als admin mit einem Testeditor (VI oder nano): test.py

Rich (BBCode):
print ("Hallo, Horst!")

dann folgt der Aufruf mit der Interpreter Angabe so wie du es bereits versucht hast:
admin@DSM62:~#
Rich (BBCode):
python3 test.py
Hallo, Horst!

damit du das nicht immer davorstellen musst, einfach das Skript erweitern:

Rich (BBCode):
#!/usr/local/bin/python3
print ("Hallo, Horst!")

nicht vergessen dieses jetzt auch ausführbar zu machen:
admin@DSM62:~#
Rich (BBCode):
chmod +x test.py

die Ausführung erfolgt dann mit einem ./….
admin@DSM62:~#
Rich (BBCode):
./test.py
Hallo, Horst!

Mehr ist es eigentlich nicht :)
Viel Erfolg, Bob.
 

chries89

Benutzer
Mitglied seit
12. Dez 2019
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Hallo Bob,

vielen Dank für die Anleitung.
Das Python Script kann ich mittlerweile per Konsole/Terminal ausführen, jedoch startet das Skript nicht per Aufgabenplaner.


Zusätzlich hatte ich im Vorfeld nachfolgende Anleitung genutzt, um "pip" zu installieren:
https://stackoverflow.com/questions/47649902/installing-pip-on-a-dsm-synology


When using a new venv pip is available automatically. For example:

user@host:~$ python3 -m venv env
user@host:~$ . env/bin/activate
(env) user@host:~$ pip --version
pip 7.1.2 from /volume1/homes/user/env/lib/python3.5/site-packages (python 3.5)
After that you can upgrade pip to the current version:

user@host:~$ pip install --upgrade pip
...
Successfully installed pip-18.0
This also has the advantage that installing packages with pip cannot break the system python.

To automatically activate your environment you can create a .profile:

user@host:~$ touch ~/.profile
user@host:~$ chmod u=rwx ~/.profile


Ich hatte (#!/usr/local/bin/python3) mit ins Script eingefügt, doch leider startet es damit auch nicht.
Als Befehl im Aufgabenplaner nutze ich:
/usr/local/bin/python3/cmx_live_importer.py


Hast du ggf. noch eine Idee, woran es liegen könnte?

Danke für deine Unterstützung und beste Grüße!
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
1
Punkte
38
Hallo,

freut mich das es schon mal auf der Konsole läuft :)
Wie führst du es dort aus - du erinnerst dich an meine Frage?
Rich (BBCode):
cd /volume1/Blackbox/importer && /usr/local/bin/python3 cmx_live_impoerter_web.py

Als Befehl im Aufgabenplaner nutze ich:
/usr/local/bin/python3/cmx_live_importer.py
Du hast dein Skript wo abgelegt? /usr/local/bin/python3 ist kein Ordner; das ergibt so für mich Null Sinn.

Ich hatte (#!/usr/local/bin/python3) mit ins Script eingefügt, doch leider startet es damit auch nicht.

Das funktioniert nur mit dem Attribut „ausführen“; das hat es auch?
Punkt 1 sollte bereits die halbe Miete sein.

Bob
 

chries89

Benutzer
Mitglied seit
12. Dez 2019
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Hi, danke für die Antwort.
Ich stehe gerade etwas auf dem Schlauch, da ich noch nicht recht verstehe, wie man im DSM so eine Aufgabe ausführt.

Aktuell habe ich das probiert, geht leider auch nicht:

#!/bin/sh /volume1/homes/test && /usr/local/bin/python3 cmx_live_importer.py
 

chries89

Benutzer
Mitglied seit
12. Dez 2019
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Ich weiß nicht so recht, wir du das "ausführen" meinst.

Ich führe das Skript im "Aufgabenplaner" aus. Dort erstelle ich eine neue Aufgabe als "benutzerdefiniertes Skript".
Die Aufgabe startet dann alle X - Minuten, o.ä.
UND dort muss auch das "Benutzerdefinierte Skript" hinterlegt werden, wo es derzeit hakt, da ich nicht weiß, was genau dort stehen soll.

Beantwortet das deine Frage?

Die Datei liegt in: /volume1/homes/test
Und heißt: cmx_live_importer.py


Ich freue mich auf deine Rückmeldung. Vielen Dank für deine Unterstützung.
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
1
Punkte
38
Die Frage lautete: ...freut mich das es schon mal auf der Konsole läuft wie führst du es dort aus?
Ich weiß nicht so recht, wir du das "ausführen" meinst.

Das sollte dir helfen; bitte per SSH auf der Konsole:
das Attribut "ausführen" setzen:
Rich (BBCode):
chmod +x /volume1/homes/test/cmx_live_importer.py
(wichtig am Kopf deines Python Skript steht: #!/usr/local/bin/python3)

dann im Synology DSM > Systemsteuerung > Aufgabenplaner > deine geplante Aufgabe > Bereich Benutzerdefiniertes Skript wie folgt anpassen:
Rich (BBCode):
cd /volume1/homes/test/ && ./cmx_live_importer.py

Bitte schreibe nichts anderes dazu, keine Punkte, Sonderzeichen, etc. so wie es dort steht.

Bob
 

chries89

Benutzer
Mitglied seit
12. Dez 2019
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Hallo Bob, soweit so gut.

Leider scheint es jetzt an den Rechten zu liegen, überhaupt die Python Pakete als Admin Nutzer ausführen zu dürfen.

Ich muss per Console zunächst
. env/bin/activate
ausführen, und habe dann "vollen" Zugriff auf Python, pip - install etc. Leider habe ich bis dato nichts gefunden, um einem Admin User direkt die Rechte o.ä. zu geben, um Python oder pip - install direkt ausführen zu können.



Beste Grüße
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
1
Punkte
38
Hi,
Leider scheint es jetzt an den Rechten zu liegen, überhaupt die Python Pakete als Admin Nutzer ausführen zu dürfen.

Nein, das hat nichts mit Rechten zu tun. Hier reden wir von Umgebungsvariablen.
Mit . env/bin/activate betrittst du eine virtuelle Umgebung die eben unabhängig vom System ist.
Hier etwas Lesestoff ;)
https://docs.python.org/3/library/venv.html
https://docs.python.org/3/tutorial/venv.html
https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/

Eine Beispiel:

admin@DSM62:~$ pip
-sh: pip: command not found

admin@DSM62:~$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Jetzt aktiviere ich meine "virtuelle Umgebung" & prüfe die PATH Var.

admin@DSM62:~$ source 4Bob/bin/activate
(4Bob) admin@DSM62:~$ echo $PATH
/volume1/homes/admin/4Bob/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

(4Bob) admin@DSM62:~$ pip --version
pip 19.3.1 from /volume1/homes/admin/4Bob/lib/python3.5/site-packages/pip (python 3.5)

(4Bob) admin@DSM62:~$ deactivate

Du kannst im Home Share die PATH Variable für jeden User anpassen.
Dazu erstellst du eine .profile und fügst den gewünschten Wert ein, so erreichst du pip auch direkt.

admin@DSM62:~$ nano .profile
export PATH="$PATH:/volume1/homes/admin/4Bob/bin"

Bob
 

chries89

Benutzer
Mitglied seit
12. Dez 2019
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Hallo Bob,

Ich habe deine Befehle durchprobiert bis auf den letzten Schritt mit dem „nano .profile“ kann ich auch alles nachvollziehen.

Leider lässt sich das py-file noch immer nicht ausführen. Wenn ich zumindest wüsste, wo das zu behebende Problem liegt....


Beste Grüße
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
1
Punkte
38
??

Hi,
bis auf den letzten Schritt mit dem „nano .profile“
Nano ist ein Texteditor, den findest du hier: https://synocommunity.com/
Das richtest du dir als zusätzliche Paketquelle ein und kannst den Editor ganz bequem übers DSM installieren. Synology hat vi mit an Board, das mag aber nicht jeder, vor allem Anfänger wie du sind damit schnell überfordert.

Wenn ich zumindest wüsste, wo das zu behebende Problem liegt....

Nennt sich Layer9 und sitzt vorm Bildschirm :eek:

Wie denkst du könnte die Unterstützung denn aussehen wenn du keine Details nennst?
1. Das Skript veröffentlichen oder zumindest dessen Aufbau wäre ein Anfang.
2. Gefolgt von einer Schritt für Schritt Beschreibung was du bisher alles versucht hast und lass nichts aus ;)

Wir haben alle keine Glaskugel!
Bob
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat