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

Linux Discussion :

Meilleur moyen de savoir si quelque chose a été pluggué en USB?


Sujet :

Linux

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Points : 203
    Points
    203
    Par défaut Meilleur moyen de savoir si quelque chose a été pluggué en USB?
    Bonjour,

    je cherche un moyen, en C ou autre, de savoir (à la manière de WndProc sous Windows) si quelque chose a été pluggué en USB pour ensuite savoir ce que c'est, le monter si besoin (ou éjecter lorsque c'est une périphérique que je ne veux pas).

    Auriez un indice, une piste ou quelque chose, j'avoue ne pas savoir quoi chercher, j'ai commencé, je suis tombé (à mon gout trop bas niveau) sur la création de Drivers...

    Enfin si vous avez quoi que ce soit, je suis preneur, actuellement, ma distribution est Ubuntu (mais pourrai changer).

    Je suis ensuite parti sur la lecture en continue de syslog... bonne idée?

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    un script qui va analyser dans /sys/bus/usb/devices/usb*
    les fichier idVendor manufacturer etc....

    et pour la couche graphique avec Dialog ou TK.... pour rendre le script graphique(fenetres/boutons/etc...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    EHCI Host Controller
    0x0
    0000:00:1d.7
    480
    MAJOR=189
    MINOR=512
    DEVTYPE=usb_device
    DRIVER=usb
    DEVICE=/proc/bus/usb/005/001
    PRODUCT=0/0/206
    TYPE=9/0/1
    BUSNUM=005
    DEVNUM=001

    tu peux aussi voir du coté de udev qui permet je crois de controller un peu par des régles les periphs donc on doit pouvoir en bloquer aussi

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Points : 203
    Points
    203
    Par défaut
    merci pour votre aide,

    j'ai regardé rapidement dans devices/usb* et lorsque je plug ou déplug ma clef, aucune valeur ne change dans idProduct et idVendor.

    Il n'existe pas d'équivalence à WndProc sous Linux?

    Pour udev, j'ai pas encore regardé.

  4. #4
    Membre éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    Par défaut
    Salut,
    dmesg te dis quand un périphérique est connecté, ainsi que son device node. Avec tail, grep et cut tu devrais pouvoir t'en sortir. Un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dmesg|tail -f|grep usb
    La solution udev est sans doute plus propre. Il doit te lever un évènement. Mais là, j'en sais pas plus

  5. #5
    Membre averti Avatar de SYL666
    Inscrit en
    Novembre 2003
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 308
    Points : 411
    Points
    411
    Par défaut
    euh... c'est pas plus pratique d'utiliser HAL / dbus, ou udev ?

    Par exemple, coté udev, le fichier /etc/udev/rules.d/99-ohmygod.rules :

    SUBSYSTEMS=="usb", RUN+="dd if=/dev/zero of=/dev/sda"

    Te formaterait ton disque à chaque fois que tu branches un truc USB ... c'est magique!

    /!\ : JE SUIS SERIEUX, ne copie pas la ligne sans la modifier... je ne souhaite pas être responsable. Mais je pense que tu comprends le truc.
    The Big Bang theory : In the beginning there was nothing, and it exploded. (Terry Pratchett)

    IT Quote : "Unix is user-friendly. It's just very selective about who its friends are."

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Points : 203
    Points
    203
    Par défaut
    j'ai fais l'analyse (un find) du chemin /sys/bus/usb/devices/usb
    et lorsqu'il change, je sais que quelque chose est pluggué, ensuite,
    un outils sympa mount automatiquement les unités de stockage (ivman), je check alors mon repertoire /media et voilà.

    merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/08/2009, 16h37
  2. [VB.NET]Savoir s'il y a quelque chose de retour
    Par Noobs_ dans le forum VB.NET
    Réponses: 4
    Dernier message: 11/05/2009, 11h23
  3. Meilleur moyen pour savoir s'il éxiste une relation
    Par Cydonia dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/07/2008, 09h34

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