Dossier partagé / samba

Vous voulez lire / éditer des fichiers qui se trouvent dans un dossier partagé? La solution ne se trouve pas vraiment dans python, mais dans la configuration de votre OS.

C'est quoi un dossier partagé?

Comme son nom l'indique un dossier partagé c'est un dossier que l'on met à disposition (publique ou privée). Le partage de dossier est facile à faire quand les systèmes d'exploitation qui communiquent sont les mêmes. Quand le dossier partagé est sous un partage Windows et qu'on a un client Linux, cela devient un petit peu plus compliqué.

Samba

Le logiciel Samba permet de partager des dossiers (et des imprimantes) dans un réseau local. Ce partage est possible quelque soit le système d'exploitation du partage.

Comment installer samba

Pour installer samba:

sudo apt-get install samba

Consulter dossier partagé

Une fois samba installé sur votre machine, vous pouvez consulter les dossiers partagés en ouvrant votre gestionnaire de fichiers. Utilisez le raccourcis claver Ctrl + l pour faire afficher la barre d'adresse. Entrez ensuite le chemin que vous voulez exploiter (avec le protocole smb)

Voici un exemple avec la box de numéricable:

Monter un dossier partagé dans le système de fichiers

Nous arrivons enfin à la partie intéressante. Voir un dossier partagé en réalité tout OS digne de ce nom est capable de le détecter. L'idée maintenant est de faire en sorte que pour python ce dossier partagé fasse partie du système de fichiers comme si c'était un dossier local.

Créons le dossier qui recevra le montage:

sudo mkdir /mnt/box

Puis créeons le montage:

sudo mount.cifs //192.168.0.2/Disque\ dur\ LaBox /mnt/test -o guest

Cet exemple est intéressant puisqu'il comporte des majuscules et des espaces. Veuillez bien à respecter les majuscules et échappez les espaces par le caractère "\".

Le probème de ce montage c'est qu'il ne dure que le temps d'une session.

Montage permanent

Pour un montage permanent, il vous faudra éditer le fichier /etc/fstab (en root) et y ajouter la ligne suivante:

//192.168.0.2/Disque\040dur\040LaBox /mnt/box cifs guest,uid=1000,iocharset=utf8 0 0

Dans ce cas la, les espaces sont remplacés par \040.

Puis lancez la commande suivante:

sudo mount -a

Vous pouvez à présent lire les fichiers du dossier partagé comme si ces fichiers étaient sut votre machine:

with open("/mnt/box/mon_fichier.txt", "r") as _file:
    data = _file.read()

Documentation sur le sujet

Doc samba ubuntu Doc samba