Wie auf eine sbm - Freigabe zugreifen ?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

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 ?
Benutzeravatar
sparrow
User
Beiträge: 4564
Registriert: Freitag 17. April 2009, 10:28

Gibt es einen Grund, das nicht dem Betriebssystem zu überlassen?
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

... weil ich in diesem Fall mit einem temporährem mount arbeiten möchte
Benutzeravatar
sparrow
User
Beiträge: 4564
Registriert: Freitag 17. April 2009, 10:28

Dann mounte nicht und verwende smbprotocol.
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

... ich denke manchmal einige können nicht richtig lesen

Ich suche eine Möglichkeit zum mounten ! - Warum und wieso ist doch total irrelevant!
Benutzeravatar
sparrow
User
Beiträge: 4564
Registriert: Freitag 17. April 2009, 10:28

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.
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

... 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.
Benutzeravatar
sparrow
User
Beiträge: 4564
Registriert: Freitag 17. April 2009, 10:28

Dann musst du die Konmandos _des Betriebssystems_ entsprechend ausführen. In Python gibt es dafür das subprocess Modul.
DL3AD
User
Beiträge: 56
Registriert: Montag 31. August 2015, 19:03

... Danke - sowas in der Art habe ich gesucht.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1266
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten