Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
bricoler:prive:samba [2025/05/31 14:24] – créée dptbricoler:prive:samba [2025/05/31 21:24] (Version actuelle) – [IP sur le réseau] dpt
Ligne 1: Ligne 1:
-Solution simple : Partage de fichiers avec Samba+====== Solution simple : Partage de fichiers avec Samba ====== 
 + 
 +===== IP sur le réseau ===== 
 + 
 +|bureau-dp(192.168.1.179)|48:21:0b:50:bf:f4|192.168.1.179| 
 +|opera-dp(192.168.1.198)|d4:5d:df:1f:8d:1a|192.168.1.198|  
 +|portable-dp(192.168.1.241)|4c:23:38:03:17:4f|192.168.1.241| 
 +|pascot(192.168.1.109)|dc:a6:32:c3:c2:f6|192.168.1.109| 
 + 
 + 
 +==== Questions GPT ====
  
 Linux Mint permet de partager facilement des dossiers (comme le dossier Bureau) avec Samba, compatible avec tous les systèmes (Linux, Windows, macOS). Linux Mint permet de partager facilement des dossiers (comme le dossier Bureau) avec Samba, compatible avec tous les systèmes (Linux, Windows, macOS).
Ligne 386: Ligne 396:
  
     Avoir une intégration automatique au démarrage ?     Avoir une intégration automatique au démarrage ?
 +
 +Parfait ! Voici la version améliorée de l'application graphique pour Linux Mint qui inclut les 3 fonctionnalités suivantes :
 +✅ Fonctions incluses :
 +
 +    ✅ Montage des dossiers Bureau distants via case à cocher
 +
 +    🧹 Démontage possible via un bouton
 +
 +    📄 Liste des IPs configurable via un fichier machines.txt
 +
 +    🔁 Exécutable au démarrage automatique (via .desktop)
 +
 +📁 Arborescence recommandée
 +
 +Crée ce dossier pour stocker tout :
 +
 +~/monte-bureau/
 +├── monter_bureaux_gui.py       # Script principal
 +├── machines.txt                # Liste des IPs
 +├── monter_bureaux.desktop      # Lancement automatique
 +
 +📄 machines.txt — Liste des IP/hostnames
 +
 +Crée un fichier machines.txt contenant une IP par ligne :
 +
 +192.168.1.10
 +192.168.1.11
 +192.168.1.12
 +
 +🖥️ Script monter_bureaux_gui.py
 +
 +Voici la version complète du script Python GTK avec montage/démontage/liste dynamique :
 +
 +#!/usr/bin/env python3
 +import gi
 +gi.require_version("Gtk", "3.0")
 +from gi.repository import Gtk
 +import subprocess
 +import os
 +
 +PARTAGE = "Bureau"
 +MONTAGE_PARENT = os.path.expanduser("~/Réseau-Bureaux")
 +FICHIER_IP = os.path.expanduser("~/monte-bureau/machines.txt")
 +
 +def lire_machines():
 +    if not os.path.exists(FICHIER_IP):
 +        return []
 +    with open(FICHIER_IP) as f:
 +        return [ligne.strip() for ligne in f if ligne.strip()]
 +
 +class BureauShareItem(Gtk.Box):
 +    def __init__(self, ip):
 +        super().__init__(orientation=Gtk.Orientation.HORIZONTAL, spacing=10)
 +        self.ip = ip
 +        self.checkbox = Gtk.CheckButton(label=f"{ip}")
 +        self.pack_start(self.checkbox, True, True, 0)
 +        self.share_available = self.check_share()
 +        if not self.share_available:
 +            self.checkbox.set_sensitive(False)
 +            self.checkbox.set_label(f"{ip} (indisponible)")
 +
 +    def check_share(self):
 +        try:
 +            output = subprocess.check_output(["smbclient", "-L", f"//{self.ip}", "-N"], stderr=subprocess.DEVNULL).decode()
 +            return PARTAGE in output
 +        except:
 +            return False
 +
 +class BureauShareApp(Gtk.Window):
 +    def __init__(self):
 +        super().__init__(title="Montage des Bureaux distants")
 +        self.set_border_width(15)
 +        self.set_default_size(450, 300)
 +        self.items = []
 +
 +        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
 +        self.add(vbox)
 +
 +        for ip in lire_machines():
 +            item = BureauShareItem(ip)
 +            self.items.append(item)
 +            vbox.pack_start(item, False, False, 0)
 +
 +        hbox = Gtk.Box(spacing=10)
 +        btn_monter = Gtk.Button(label="Monter les bureaux sélectionnés")
 +        btn_monter.connect("clicked", self.on_monter_clicked)
 +        hbox.pack_start(btn_monter, True, True, 0)
 +
 +        btn_demonter = Gtk.Button(label="Démonter tous les bureaux")
 +        btn_demonter.connect("clicked", self.on_demonter_clicked)
 +        hbox.pack_start(btn_demonter, True, True, 0)
 +
 +        vbox.pack_start(hbox, False, False, 0)
 +
 +    def on_monter_clicked(self, button):
 +        os.makedirs(MONTAGE_PARENT, exist_ok=True)
 +        for item in self.items:
 +            if item.checkbox.get_active() and item.share_available:
 +                dossier = os.path.join(MONTAGE_PARENT, item.ip)
 +                os.makedirs(dossier, exist_ok=True)
 +                subprocess.run([
 +                    "sudo", "mount", "-t", "cifs", f"//{item.ip}/{PARTAGE}", dossier,
 +                    "-o", f"guest,uid={os.getuid()},gid={os.getgid()},_netdev"
 +                ])
 +        self.afficher_message("Montage terminé")
 +
 +    def on_demonter_clicked(self, button):
 +        if not os.path.exists(MONTAGE_PARENT):
 +            return
 +        for nom in os.listdir(MONTAGE_PARENT):
 +            chemin = os.path.join(MONTAGE_PARENT, nom)
 +            subprocess.run(["sudo", "umount", chemin])
 +        self.afficher_message("Tous les partages ont été démontés")
 +
 +    def afficher_message(self, texte):
 +        dialog = Gtk.MessageDialog(
 +            transient_for=self,
 +            flags=0,
 +            message_type=Gtk.MessageType.INFO,
 +            buttons=Gtk.ButtonsType.OK,
 +            text=texte,
 +        )
 +        dialog.run()
 +        dialog.destroy()
 +
 +if __name__ == "__main__":
 +    win = BureauShareApp()
 +    win.connect("destroy", Gtk.main_quit)
 +    win.show_all()
 +    Gtk.main()
 +
 +🔁 Démarrage automatique avec .desktop
 +
 +Crée ce fichier :
 +
 +~/.config/autostart/monter_bureaux.desktop
 +
 +Avec ce contenu :
 +
 +[Desktop Entry]
 +Name=Montage Bureaux Réseau
 +Exec=/usr/bin/python3 /home/<TON_USER>/monte-bureau/monter_bureaux_gui.py
 +Terminal=false
 +Type=Application
 +X-GNOME-Autostart-enabled=true
 +
 +    🔁 Remplace /home/<TON_USER> par ton chemin réel
 +
 +✨ Finalisation
 +
 +    Crée le dossier :
 +
 +mkdir -p ~/monte-bureau ~/Réseau-Bureaux ~/.config/autostart
 +
 +    Place :
 +
 +        monter_bureaux_gui.py → ~/monte-bureau/
 +
 +        machines.txt → ~/monte-bureau/
 +
 +        .desktop → ~/.config/autostart/
 +
 +    Rends le script exécutable :
 +
 +chmod +x ~/monte-bureau/monter_bureaux_gui.py
 +
 +Souhaites-tu une version empaquetée en .deb ou un lanceur dans le menu Mint ?
 +
 +Parfait ! Voici la version améliorée de l'application graphique pour Linux Mint qui inclut les 3 fonctionnalités suivantes :
 +✅ Fonctions incluses :
 +
 +    ✅ Montage des dossiers Bureau distants via case à cocher
 +
 +    🧹 Démontage possible via un bouton
 +
 +    📄 Liste des IPs configurable via un fichier machines.txt
 +
 +    🔁 Exécutable au démarrage automatique (via .desktop)
 +
 +📁 Arborescence recommandée
 +
 +Crée ce dossier pour stocker tout :
 +
 +~/monte-bureau/
 +├── monter_bureaux_gui.py       # Script principal
 +├── machines.txt                # Liste des IPs
 +├── monter_bureaux.desktop      # Lancement automatique
 +
 +📄 machines.txt — Liste des IP/hostnames
 +
 +Crée un fichier machines.txt contenant une IP par ligne :
 +
 +192.168.1.10
 +192.168.1.11
 +192.168.1.12
 +
 +🖥️ Script monter_bureaux_gui.py
 +
 +Voici la version complète du script Python GTK avec montage/démontage/liste dynamique :
 +
 +#!/usr/bin/env python3
 +import gi
 +gi.require_version("Gtk", "3.0")
 +from gi.repository import Gtk
 +import subprocess
 +import os
 +
 +PARTAGE = "Bureau"
 +MONTAGE_PARENT = os.path.expanduser("~/Réseau-Bureaux")
 +FICHIER_IP = os.path.expanduser("~/monte-bureau/machines.txt")
 +
 +def lire_machines():
 +    if not os.path.exists(FICHIER_IP):
 +        return []
 +    with open(FICHIER_IP) as f:
 +        return [ligne.strip() for ligne in f if ligne.strip()]
 +
 +class BureauShareItem(Gtk.Box):
 +    def __init__(self, ip):
 +        super().__init__(orientation=Gtk.Orientation.HORIZONTAL, spacing=10)
 +        self.ip = ip
 +        self.checkbox = Gtk.CheckButton(label=f"{ip}")
 +        self.pack_start(self.checkbox, True, True, 0)
 +        self.share_available = self.check_share()
 +        if not self.share_available:
 +            self.checkbox.set_sensitive(False)
 +            self.checkbox.set_label(f"{ip} (indisponible)")
 +
 +    def check_share(self):
 +        try:
 +            output = subprocess.check_output(["smbclient", "-L", f"//{self.ip}", "-N"], stderr=subprocess.DEVNULL).decode()
 +            return PARTAGE in output
 +        except:
 +            return False
 +
 +class BureauShareApp(Gtk.Window):
 +    def __init__(self):
 +        super().__init__(title="Montage des Bureaux distants")
 +        self.set_border_width(15)
 +        self.set_default_size(450, 300)
 +        self.items = []
 +
 +        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
 +        self.add(vbox)
 +
 +        for ip in lire_machines():
 +            item = BureauShareItem(ip)
 +            self.items.append(item)
 +            vbox.pack_start(item, False, False, 0)
 +
 +        hbox = Gtk.Box(spacing=10)
 +        btn_monter = Gtk.Button(label="Monter les bureaux sélectionnés")
 +        btn_monter.connect("clicked", self.on_monter_clicked)
 +        hbox.pack_start(btn_monter, True, True, 0)
 +
 +        btn_demonter = Gtk.Button(label="Démonter tous les bureaux")
 +        btn_demonter.connect("clicked", self.on_demonter_clicked)
 +        hbox.pack_start(btn_demonter, True, True, 0)
 +
 +        vbox.pack_start(hbox, False, False, 0)
 +
 +    def on_monter_clicked(self, button):
 +        os.makedirs(MONTAGE_PARENT, exist_ok=True)
 +        for item in self.items:
 +            if item.checkbox.get_active() and item.share_available:
 +                dossier = os.path.join(MONTAGE_PARENT, item.ip)
 +                os.makedirs(dossier, exist_ok=True)
 +                subprocess.run([
 +                    "sudo", "mount", "-t", "cifs", f"//{item.ip}/{PARTAGE}", dossier,
 +                    "-o", f"guest,uid={os.getuid()},gid={os.getgid()},_netdev"
 +                ])
 +        self.afficher_message("Montage terminé")
 +
 +    def on_demonter_clicked(self, button):
 +        if not os.path.exists(MONTAGE_PARENT):
 +            return
 +        for nom in os.listdir(MONTAGE_PARENT):
 +            chemin = os.path.join(MONTAGE_PARENT, nom)
 +            subprocess.run(["sudo", "umount", chemin])
 +        self.afficher_message("Tous les partages ont été démontés")
 +
 +    def afficher_message(self, texte):
 +        dialog = Gtk.MessageDialog(
 +            transient_for=self,
 +            flags=0,
 +            message_type=Gtk.MessageType.INFO,
 +            buttons=Gtk.ButtonsType.OK,
 +            text=texte,
 +        )
 +        dialog.run()
 +        dialog.destroy()
 +
 +if __name__ == "__main__":
 +    win = BureauShareApp()
 +    win.connect("destroy", Gtk.main_quit)
 +    win.show_all()
 +    Gtk.main()
 +
 +🔁 Démarrage automatique avec .desktop
 +
 +Crée ce fichier :
 +
 +~/.config/autostart/monter_bureaux.desktop
 +
 +Avec ce contenu :
 +
 +[Desktop Entry]
 +Name=Montage Bureaux Réseau
 +Exec=/usr/bin/python3 /home/<TON_USER>/monte-bureau/monter_bureaux_gui.py
 +Terminal=false
 +Type=Application
 +X-GNOME-Autostart-enabled=true
 +
 +    🔁 Remplace /home/<TON_USER> par ton chemin réel
 +
 +✨ Finalisation
 +
 +    Crée le dossier :
 +
 +mkdir -p ~/monte-bureau ~/Réseau-Bureaux ~/.config/autostart
 +
 +    Place :
 +
 +        monter_bureaux_gui.py → ~/monte-bureau/
 +
 +        machines.txt → ~/monte-bureau/
 +
 +        .desktop → ~/.config/autostart/
 +
 +    Rends le script exécutable :
 +
 +chmod +x ~/monte-bureau/monter_bureaux_gui.py
 +
 +Souhaites-tu une version empaquetée en .deb ou un lanceur dans le menu Mint ?
 +
 +
 +Parfait ! Voici comment créer un lanceur dans le menu de Linux Mint pour ouvrir ton application graphique de montage de dossiers réseau.
 +✅ Étapes pour ajouter un lanceur dans le menu Mint
 +1. Ouvre l’éditeur de menus Mint :
 +
 +Tu peux y accéder de deux manières :
 +
 +    Clique droit sur le menu > Configurer > onglet Menu > bouton "Ouvrir l'éditeur de menu"
 +
 +    Ou lance dans un terminal :
 +
 +mozo
 +
 +    Si mozo n’est pas installé, installe-le :
 +
 +sudo apt install alacarte
 +
 +2. Crée une nouvelle entrée
 +
 +Dans l'éditeur de menus :
 +
 +    Choisis une catégorie (ex : "Accessoires" ou crée-en une)
 +
 +    Clique sur "Nouvel élément"
 +
 +    Remplis les champs suivants :
 +
 +    Nom : Montage Bureaux Réseau
 +
 +    Commande :
 +
 +    python3 /home/<TON_UTILISATEUR>/monte-bureau/monter_bureaux_gui.py
 +
 +        Remplace <TON_UTILISATEUR> par ton vrai nom d'utilisateur
 +
 +    Commentaire (facultatif) : Interface pour monter les dossiers Bureau partagés
 +
 +    Clique sur l’icône pour en choisir une si tu veux (ex. dossier réseau)
 +
 +    Clique sur "OK"
 +
 +3. Tester le lanceur
 +
 +    Ouvre ton Menu Mint
 +
 +    Va dans la catégorie choisie (ex. "Accessoires")
 +
 +    Clique sur "Montage Bureaux Réseau"
 +
 +    L’interface devrait se lancer
 +
 +✅ Astuce : si ça ne se lance pas, vérifie que le script est bien exécutable :
 +
 +chmod +x ~/monte-bureau/monter_bureaux_gui.py
 +
 +Souhaites-tu maintenant :
 +
 +    Ajouter une icône personnalisée (SVG/PNG) pour ce lanceur ?
 +
 +    Que je t’aide à convertir tout ça en un .deb installable proprement ?
 +Parfait ! Voici comment créer un lanceur dans le menu de Linux Mint pour ouvrir ton application graphique de montage de dossiers réseau.
 +✅ Étapes pour ajouter un lanceur dans le menu Mint
 +1. Ouvre l’éditeur de menus Mint :
 +
 +Tu peux y accéder de deux manières :
 +
 +    Clique droit sur le menu > Configurer > onglet Menu > bouton "Ouvrir l'éditeur de menu"
 +
 +    Ou lance dans un terminal :
 +
 +mozo
 +
 +    Si mozo n’est pas installé, installe-le :
 +
 +sudo apt install alacarte
 +
 +2. Crée une nouvelle entrée
 +
 +Dans l'éditeur de menus :
 +
 +    Choisis une catégorie (ex : "Accessoires" ou crée-en une)
 +
 +    Clique sur "Nouvel élément"
 +
 +    Remplis les champs suivants :
 +
 +    Nom : Montage Bureaux Réseau
 +
 +    Commande :
 +
 +    python3 /home/<TON_UTILISATEUR>/monte-bureau/monter_bureaux_gui.py
 +
 +        Remplace <TON_UTILISATEUR> par ton vrai nom d'utilisateur
 +
 +    Commentaire (facultatif) : Interface pour monter les dossiers Bureau partagés
 +
 +    Clique sur l’icône pour en choisir une si tu veux (ex. dossier réseau)
 +
 +    Clique sur "OK"
 +
 +3. Tester le lanceur
 +
 +    Ouvre ton Menu Mint
 +
 +    Va dans la catégorie choisie (ex. "Accessoires")
 +
 +    Clique sur "Montage Bureaux Réseau"
 +
 +    L’interface devrait se lancer
 +
 +✅ Astuce : si ça ne se lance pas, vérifie que le script est bien exécutable :
 +
 +chmod +x ~/monte-bureau/monter_bureaux_gui.py
 +
 +Souhaites-tu maintenant :
 +
 +    Ajouter une icône personnalisée (SVG/PNG) pour ce lanceur ?
 +
 +    Que je t’aide à convertir tout ça en un .deb installable proprement ?
 +    
 +    
 +    Très bien ! Voici comment ajouter une icône personnalisée à ton lanceur Linux Mint pour que l’entrée dans le menu soit plus claire et visuellement agréable.
 +🧱 Étapes pour ajouter une icône
 +📁 1. Choisis ou crée une icône
 +
 +    Format recommandé : .png ou .svg
 +
 +    Taille recommandée : 48×48 ou 64×64
 +
 +    Nom de fichier suggéré : reseau-bureau.png
 +
 +📂 2. Place ton icône
 +
 +Copie l’image dans un dossier standard, par exemple :
 +
 +mkdir -p ~/.local/share/icons
 +cp reseau-bureau.png ~/.local/share/icons/
 +
 +✍️ 3. Modifier le fichier .desktop
 +
 +Si tu as déjà créé le fichier .desktop dans ~/.local/share/applications/ (ou via l’éditeur de menus), édite-le :
 +
 +nano ~/.local/share/applications/monter_bureaux.desktop
 +
 +Ajoute ou modifie la ligne suivante :
 +
 +Icon=reseau-bureau
 +
 +    ⚠️ Ne mets pas l’extension .png ou .svg dans le champ Icon, juste le nom de fichier (le système les trouve automatiquement).
 +
 +✅ Exemple complet
 +
 +[Desktop Entry]
 +Name=Montage Bureaux Réseau
 +Exec=python3 /home/<TON_UTILISATEUR>/monte-bureau/monter_bureaux_gui.py
 +Icon=reseau-bureau
 +Type=Application
 +Terminal=false
 +X-GNOME-Autostart-enabled=true
 +
 +🔁 4. Rafraîchir le cache des icônes (si besoin)
 +
 +gtk-update-icon-cache ~/.local/share/icons
 +
 +📌 Résultat
 +
 +L’entrée "Montage Bureaux Réseau" dans ton menu Mint affichera ta belle icône personnalisée.
 +
 +Souhaites-tu que je te génère une icône réseau-dossier stylée (minimaliste ou colorée) en PNG ou SVG ?
 +
 +
  
  
  • bricoler/prive/samba.1748701477
  • Dernière modification : 2025/05/31 14:24
  • de dpt