Seite 1 von 1

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

Verfasst: Mittwoch 21. September 2022, 20:27
von Snakepit
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?

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

Verfasst: Mittwoch 21. September 2022, 20:46
von nezzcarth
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.

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

Verfasst: Mittwoch 21. September 2022, 20:51
von hyle
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?

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

Verfasst: Mittwoch 21. September 2022, 21:46
von Snakepit
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.