IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Monter une clé usb toujours au même endroit


Sujet :

Administration système

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut Monter une clé usb toujours au même endroit
    Bonjour à tous !

    Je travaille actuellement sur une application raspberry pi (donc sour raspbian).
    Mon application effectue diverses mesures qui sont ensuite collectées dans un excel puis enregistrer sur une clé usb.

    Problème
    Actuellement le chemin de ma clé usb est écrit en dur dans mon code (ex : /media/pi/macléUSB4/)

    Problème
    -certaines fois le point de montage de ma clé usb change (ex : media/pi/macléUSB5) rendant mon code obsolète
    -Je souhaiterais pouvoir enregistrer mes mesures sur n'importe quelle clé usb (sans avoir forcément à changer son nom)

    En sachant que ça sera toujours le même port USB qui sera utilisé comme port pour la clé USB sur ma raspberry.

    J'ai donc suivi la partie Montage des disques durs de ce tuto/ mais mon problème est le suivant :
    des fois la clé usb se monte sur /dev/sdb1, parfois sur /dev/sda1

    Une de mes idées était de modifier le fichier fstab pour monter /dev/sdb1 et/ dev/sda1 sur le même dossier (ex : media/pi/DDgeneral) mais j'ignore si c'est une bonne idée..

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Tu peux utiliser l'uuid

    https://doc.ubuntu-fr.org/uuid_et_label

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Merci je vais regarder de ce coté là Mais l'uuid est propre à que clé usb non ? du coup impossible d'établir une règle general pour mon port usb sur la raspberry

  4. #4
    Membre émérite

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 035
    Par défaut
    Mais l'uuid est propre à que clé usb non ?
    Ah queu coucou !

    Blague à part chaque clé différente aura un UUID différent mais il y-a peut-être un moyen d'avoir plusieurs clés avec un même UUID.

    Tu prend une clé USB existante et tu relève son UUID et tu fais une génération de l'image disque que tu restaurera sur les autres clés. Normalement toutes tes clés auront le même UUID.

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 322
    Par défaut
    UUID est dans le FS, ce n'est pas le numéro de série du matériel.

    Donc la solution de mm_71 est utilisable, mais implique d’écraser le volume si celui-ci contient quelque chose, les données seront perdus.

    Ca reste une solution pas propre.

    Coder le chemin en dur, c'est pas top top. Mais si tu considères que tu montes manuellement ta clé avant apple de ton appli et donc arbitrairement toujours au même endroit, ça reste envisageable.

    Autre alternative : scanner tous les volumes montés, et y chercher un fichier caché par exemple et considérer le volume comme volume de destination si ce fichier s'y trouve, quitte à remonter le volume une seconde fois depuis ton appli vers ton chemin codé en dur. Cette solution est intéressante si tu souhaites utiliser une clé pré-existante contenant des données, solution qui n'est pas possible par la solution de mm_71. Avec cette solution, tu pourrais ajouter un argument à ton appli permettant d'écrire automatiquement le fichier caché en passant le volume de destination en paramètre. Si tu écrira toujours sur le même volume, on peut aussi revenir vers la solution de l'UUID, en scannant les volumes montés et en lisant leur UUID pour trouver le bon volume, quitte à remonter celui-ci sur ton chemin en dur.

    Un volume peut être monté sur plusieurs points de partage. Par contre ne pas oublier de démonter proprement.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    A que merci beaucoup pour vos réponses !

    Mon app sera utilisé par des personnes externes malheureusement...

    Si la solution de mm_71 implique d'écraser le volume ça risque de ne pas être adapté pour m, et avoir un fichier caché dans la clé implique qu'on ne puisse pas utiliser n'importe quel clé usb sans la traiter avant...

    Je ne sais pas si cela aide mais une alternative pourrait être d'imposer un nom à la clé usb que j'utilise (du genre "DATA").

    J'ai également remarqué que mon problème venait surement d'un mauvais démontage de la clé lors de l'arret de mon appli (puisque le point de montage passe de "DATA" à "DATA1" à "DATA2" etc....

    Une solution bien cracra pourrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try 
        "accéder à media/pi/DATA"
    except OSError 
        try
            "accéder à media/pi/DATA1"
        except OSError
            "accéder à media/pi/DATA2
    optimiser ça avec une boucle mais c'est très cracra je trouve

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 295
    Par défaut
    Bonjour

    • Je lis "Point de montage".
      Mais ce n'est qu'un dossier dans l'arborescence virtuelle de Linux.
      Il peut changer.
      Ce n'est pas la solution.
    • Je lis "UUID".
      Mais UUID est une identification absolue d'une partition.
      Or on veut que n'importe qui connecte n'importe quelle clé sur le port obligatoire.
      S'il fallait refaire le script à chaque achat de nouvelle clé usb, quelle galère !
      Ce n'est pas la solution.
    • Je lis "/dev/sdb1 ou /dev/sda1".
      Bizarre. (ne peut-on pas fixer cela une fois pour toute dans fstab ? )
      Il peut changer.
      Donc ce n'est pas ça.


    En fait, ce qu'on voudrait faire, c'est vérifier que le fichier, dans /dev, du stockage de masse est bien celui de la clé usb connectée dans le port.

    Pour savoir ce qui est monté :
    Pour savoir les périphériques USB (non triviaux) connectés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); 
    do     
             syspath="${sysdevpath%/dev}";
             devname="$(udevadm info -q name -p $syspath)";
             [[ "$devname" == "bus/"* ]] && continue;
             eval "$(udevadm info -q property --export -p $syspath)";
             [[ -z "$ID_SERIAL" ]] && continue;
             echo "/dev/$devname - $ID_SERIAL";
    done
    Il faut repérer le numéro de bus et le numéro de device.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    udevadm info --name /dev/sdb1 -a
    Je repère que le "busnum" est 3 et le "devnum" est 5.
    Donc bus: 3; device: 5

    Quelque soit la clé USB, il faut qu'elle donne ces nombres.

    Tapons donc la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    udevadm info --name /dev/sdb1 -a |awk 'BEGIN{RS="\n\n";FS="\n";} {if ($0 ~ /.*busnum.=="3".*devnum.=="5".*/) print "Clé OK";}'
    Normalement, cette commande renvoie "Clé OK", si /dev/sdb1 correspond au port voulu, rien sinon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ udevadm info --name /dev/sdb1 -a |awk 'BEGIN{RS="\n\n";FS="\n";} {if ($0 ~ /.*busnum.=="3".*devnum.=="5".*/) print "Clé OK";}'
    Clé OK
    Je débranche la clé et la mets sur un autre port.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ udevadm info --name /dev/sdb1 -a |awk 'BEGIN{RS="\n\n";FS="\n";} {if ($0 ~ /.*busnum.=="3".*devnum.=="5".*/) print "Clé OK";}'
    $ udevadm info --name /dev/sdb1 -a |awk 'BEGIN{RS="\n\n";FS="\n";} {if ($0 ~ /.*busnum.=="3".*devnum.=="1".*/) print "Clé OK";}'
    Clé OK
    Les identifiants de ce nouveau port sont donc 3 et 1


    Le plus élégant ne serait-il pas de demander à l'utilisateur de choisir un dossier cible ?
    ( tout ça pour ça)

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Salut Flodelarab,

    Merci beaucoup pour ta réponse très complète
    J'ai entretemps demandé de l'aide à une personne de mon entourage, et on en est arrivé à la solution suivante (qui correspond parfaitement à mon problème je pense) :
    (le code est en python)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adresseUSB=str(os.popen("mount | grep /media/pi | cut -d " " -f3").readlines())
    pour explication sur "mount | grep /media/pi | cut -d " " -f3" si d'autres tombent sur ce topic :

    -mount nous donne tous les périphériques montés sur ma pi
    -grep /media/pi nous donne uniquement ceux qui seront monté sur ce fichier (or je n'aurais jamais plus de une clé usb à la fois)
    -cut -d " " -f3 permet de récuperer uniquement le chemin dans tous ça

    merci à tous de votre aide !!

    EDIT : Pour une raison qui m'échappe, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adresseUSB=str(os.popen("mount | grep /media/pi | cut -d " " -f3").readlines())
    ne fonctionne pas en python.. je l'ai donc fait en 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    adresseUSB=str(os.popen("mount | grep /media/pi").readlines())
    adresseUSB=adresseUSB.split(" ")[2]

  9. #9
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Pourquoi du python ?

    En bash pur ça fonctionne.

    Exemple avec un dd usb que je viens de connecter et qui est en mode "montage automatique".
    D'abord la commande mount, qui me donne (juste la ligne qui nous intéresse) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /dev/sdc1 on /media/Passport_WD type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
    Je précise qu'il n'y a rien dans mon fstab à ce propos.

    Ensuite la commande qui va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mount | grep /media/Passport_WD | cut -d " " -f1
    va me sortir /dev/sdc1.

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    device=$(mount | grep /media/Passport_WD | cut -d " " -f1)
    echo $device
    fonctionne tip-top.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Salut Jp,

    Tout simplement parce que le reste de mon application est en python ! (sinon je ne me serais pas fatigué à faire des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str(os.popen(ligne de bash))
    Mea culpa ! Je ne l'avais pas précisé dans mon post initial ! Je suis sur que ta réponse pourra servir à d'autres !

  11. #11
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    Bonsoir,

    Aucun d'entre vous n'a pensé à utiliser les LABEL ?

    Quoi de plus facile que de donner toujours le même label à une clef usb lors d'un formatage et ensuite d'associer dans /etc/fstab ce LABEL à un point de montage ?

    L'avantage me semble être évident tant en terme de simplicité que de propreté.

    Code exemple d'utilisation de LABEL dans /etc/fstab : Sélectionner tout - Visualiser dans une fenêtre à part
    LABEL=racine	/			ext4		defaults,discard,relatime,errors=remount-ro	0	1

    Personnellement, je n'utilise que les LABEL en lieu et place des UUID que je trouve bien plus casse-pieds.
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. monter une clé usb sous hp-ux
    Par ludo24 dans le forum Autres systèmes
    Réponses: 0
    Dernier message: 29/04/2008, 10h46
  2. 1er terme d'une suite aléatoire, toujours le même a peu près
    Par _Michel dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 06/04/2008, 12h03
  3. monter une clé usb sous Damn Small Linux embedded version
    Par damiano84 dans le forum Matériel
    Réponses: 4
    Dernier message: 13/03/2008, 18h00
  4. pb pour monter une cle usb
    Par redabadache3 dans le forum Matériel
    Réponses: 3
    Dernier message: 28/08/2007, 19h08
  5. Monter une clé USB
    Par Ultra-FX dans le forum Matériel
    Réponses: 3
    Dernier message: 06/04/2007, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo