Programm läuft unter Linux, jedoch nicht mit anderem User

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Snakepit
User
Beiträge: 12
Registriert: Samstag 12. Juli 2014, 20:08

Hallo liebe Boardies,

ich werde noch wahnsinnig!

Ich habe einen kleinen Codeschnipsel, der mit Wake On Lan meinen PC aufweckt.
Dies funktioniert super, jedoch soll das Programm nicht als root aktiviert werden, sondern als User "woluser", da ich dies über einen Fernzugriff per Telegram machen will.
Mein Programm läuft auch und der Rechner startet, jedoch nur als root :-(.

Wenn ich es als woluser starte, auch mit root Rechten, dann kommt immer folgende Fehlermeldung!

Code: Alles auswählen

ModuleNotFoundError: No module named 'wakeonlan'

Code: Alles auswählen

#!/usr/bin/env python3

from wakeonlan import send_magic_packet

send_magic_packet('xx.xx.xx.xx.xx.xx')
print ("Magisches Paket wurde verschickt an PC")

Ich vermute der woluser (mit Admin) hat irgendwie keinen Zugriff auf das Verzeichnis in dem wakeonlan liegt. Dies wurde ganz normal damals beim root installiert und wird auch beim woluser erkannt, wenn ich es installieren will. 0 neu installiert, 0 upgedatet.. usw.

Ich denke es ist irgend eine Kleinigkeit, auf welche ich aber nicht komme.

Evtl. kann mir ja jemand noch helfen?
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Die Lösung ist hier aus meiner Sicht, dass man mit einer virtuellen Umgebung arbeitet. Diese kannst du zum Beispiel mit dem Modul venv anlegen. In diese Umgebung installierst du alle Pakete, die du benötigst. Anschließend musst du dafür sorgen, dass das Skript mit dem Interpreter innerhalb des Venvs gestartet wird (/pfad/zum/venv/bin/python3). System-weite Orte, an denen du die virtuelle Umgebung gefahrlos anlegen kannst, sind /opt oder /usr/local. Diese sind vom Filesystem Hierarchy Standard extra dafür vorgesehen. Anschließend noch auf die Permissions achten.

Python-Pakete global als root zu installieren sollte man wirklich unbedingt vermeiden. Das Problem ist, dass die Dateien dann an Stellen unter /usr landen, die eigentlichen Hoheitsgebiet der Paketverwaltung sind und dieser in die Quere kommen. Dateien, die nicht über den Paketmanager verwaltet werden, haben da nichts verloren. Wenn du beispielsweise über deinen Paketmanager mal ein Paket installierst (und sei es nur als Abhängigkeit), das bereits schon über pip vorhanden ist, kommt es zu Problemen.
Benutzeravatar
hyle
User
Beiträge: 96
Registriert: Sonntag 22. Dezember 2019, 23:19
Wohnort: Leipzig

Für welchen User, bzw. wie genau hast Du denn das Modul 'wakeonlan' installiert? Ist das auch für diesen woluser User verfügbar?

Hast Du es als woluser mal mit pip(3) install wakeonlan versucht?
Alles was wir sind ist Sand im Wind Hoschi.
Snakepit
User
Beiträge: 12
Registriert: Samstag 12. Juli 2014, 20:08

Danke für eure Hilfe, durch die "Denkanstöße" bin ich auf eine andere Idee gekommen.

Python wurde damals nur für den "root" installiert. Der "woluser" kam später hinzu.
Ich hatte jetzt einfach noch einmal Python "installiert" mit

Code: Alles auswählen

apt install python3
Jetzt geht es!!!

Es war also wirklich an den Rechten bzw. dem fehlenden Zugriff bzw. fehlende Erweiterungen gewesen.
Antworten