Seite 1 von 1
Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Sonntag 28. September 2025, 15:37
von DL3AD
Hallo in die Runde,
wie erstellt man mit Python einen mount auf eine smb Freigabe um dann auf Dateien zuzugreifen ?
Welche Möglichkeiten gibt es da ?
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Sonntag 28. September 2025, 15:59
von sparrow
Gibt es einen Grund, das nicht dem Betriebssystem zu überlassen?
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Sonntag 28. September 2025, 16:31
von DL3AD
... weil ich in diesem Fall mit einem temporährem mount arbeiten möchte
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Sonntag 28. September 2025, 17:59
von sparrow
Dann mounte nicht und verwende
smbprotocol.
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Montag 29. September 2025, 06:12
von DL3AD
... ich denke manchmal einige können nicht richtig lesen
Ich suche eine Möglichkeit zum mounten ! - Warum und wieso ist doch total irrelevant!
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Montag 29. September 2025, 06:15
von sparrow
Ich denke sehr oft, Menschen verstehen die Antwort nicht.
Wenn du etwas _mounten_ möchtest, dann brauchst du das Betriebssystem.
Inklusive dessen Fähigkeit das zu tun. Nicht jedes kann das. Nicht bei jedem ist das gleich.
Willst du nicht, hast du gesagt.
Wenn du auf eine SMB Freigabe zugreifen willst ohne das zu tun, dann nutze smbclient aus der von mir verlinkten Bibliothek.
Deine Frage klingt, als müsste man da etwas mounten um auf die Dateien zuzugreifen.
Muss man nicht.
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Montag 29. September 2025, 06:49
von DL3AD
... ich verwende Debian KDE.
Im Prinzip suche ich eine Art Wraper für die Mountfähigkeiten von Debian.
Es soll nicht vor dem Start der Pythonanwendung sondern durch die Pythenanwendung gemacht werden.
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Montag 29. September 2025, 07:36
von sparrow
Dann musst du die Konmandos _des Betriebssystems_ entsprechend ausführen. In Python gibt es dafür das subprocess Modul.
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Montag 29. September 2025, 07:53
von DL3AD
... Danke - sowas in der Art habe ich gesucht.
Re: Wie auf eine sbm - Freigabe zugreifen ?
Verfasst: Montag 29. September 2025, 10:32
von DeaD_EyE
DL3AD hat geschrieben: Montag 29. September 2025, 06:12
... ich denke manchmal einige können nicht richtig lesen
Ich suche eine Möglichkeit zum
mounten ! - Warum und wieso ist doch total irrelevant!
Mount von Medien (kein Smaba):
Dafür benötigt man Root-Rechte. Nur root darf mounten. Bei Windows müsste ich erstmal selbst googeln.
Aber
udisks2 kann das.
Code: Alles auswählen
udisksctl mount -b /dev/sdc1
udisksctl unmount -b /dev/sdc1
Gemountet wird dann nach: /run/media/$USER/VolumeName
Code: Alles auswählen
import subprocess
def mount(blockdev):
"""
Sollte noch erweitert werden, damit udiskctl den Pfad ausgibt, der gemountet worden ist.
"""
subprocess.run(["udisksctl", "mount", "-b", blockdev])
def umount(blockdev):
subprocess.run(["udisksctl", "umount", "-b", blockdev])
Mount von smb shares:
Man kann das tool
gio nutzen. Das ist aber von Gnome und hat ein paar Abhängigkeiten. Es sollte aber nicht der komplette Desktop installiert werden.
Code: Alles auswählen
gio mount --anonymous "smb://servername/share"
gio mount --unmount "smb://servername/share"
Code: Alles auswählen
import subprocess
def smb_mount(target, username="", workgroup="", password="", anonymous=False):
"""
Auch hier noch keine Ausgabe des Pfads, wo der smb-share eingehangen worden ist.
"""
if anonymous:
subprocess.run(["gio", "mount", "--anonymous", f"smb:{target}"])
else:
subprocess.run(["gio", "mount", f"smb:{target}"], encoding="utf8", input=f""{username}\n{workgroup}\n{password}\n"")
def smb_umount(target):
subprocess.run(["gio", "mount", "--unmount", f"smb:{target}"])
Code ist nicht getestet. Ich denke mal, dass du den Rest selbst schaffst.
Möglicherweise gibt es auch Module, um das OS komplett zu umgehen.
Da ich kein Windows nutze und keine SMB-Freigaben habe, interessiert mich das nicht wirklich.