Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
hotplug et les clefs usb
Envoyé par: der_jaioubliemonpasswd

salut à vous

J'aimerais monter une clef usb puis appeller un script à moi à partir des évenements du noyau.
Je suis sous Debian 2.6.14.2 et j'ai installé hotplug.

Mais voila, au moment où le script usb/usb-storage est bien appellé par usb.agent ( tout ça dans /etc/hotplug ) je ne sais pas comment determiner quel périphérique doit être monté ( /dev/sdX ).
J'ai essayé deux scripts fait maison par quelques internautes aventureux mais aucun des deux ne fonctionne. L'un deux parse la sortie de dmesg ( méthode qualifiée de "quick hack" par l'auteur ) et l'autre ( retrouvé ici http://lists.debian.org/debian-user-french/2004/03/msg00614.html usb-storage et usb-storage.conf ) échoue en disant "Could not deduce device for"

voici la sortie de /proc/bus/usb/device pour le périphérique concerné :

T:  Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  6 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0c76 ProdID=0005 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

et voici ce que me dit /proc/scsi/usb-storage/5

   Host scsi5: usb-storage
       Vendor: Unknown
      Product: Unknown
Serial Number: None
     Protocol: Transparent SCSI
    Transport: Bulk
       Quirks:

et enfin au boot il y a bien un message parlant d'un module usb-storage.o qui est chargé.

Ah oui, dernière chose, le montage à la main se fait sans problème, en tatonnant certe, pour trouver /dev/sdc1.

p.s. J'ai du adapté le deuxième script : chez moi il n'y a pas de /proc/scsi/usb-storage-X/ mais seulement /proc/scsi/usb-storage/. Peut-être est-ce déjà une erreur !?

merci pour votre aide

Poste le Thursday 13 April 2006 10:03:28
Répondre     Citer    
Re: hotplug et les clefs usb
Envoyé par: elfato

si tu es en 2.6 sert toi plustot de /sys/...../bus/USB/usb.... pour ecrire une regle udev et un fichier associé dans /dev

comme ça le hotplug sera efficace même si tu change de clef usb ou même de peripherique de type stockage USB

y'a des tutoriaux simple sur UDEV voir google pour les trouver c'est tres simple

[www.google.fr]

Poste le Thursday 13 April 2006 10:12:21
Répondre     Citer    
Re: hotplug et les clefs usb
Envoyé par: der

J'avais pris hotplug car il me semblait que c'était ce que recommandait gphoto ( j'ai aussi un script - de 10 lignes qui fonctionne, hourra - pour lire mon appareil photo numérique ).
Renseignement pris, c'est vrai que beaucoup de gens ont l'air d'utiliser UDEV, mais ça semble plus complexe(=> plus puissant ?) que hotplug.

Ca m'ennuie et m'effraie de devoir changer juste pour un mount /dev/sdX /mnt/quelquepart; je vais tout de même essayer à moins q'un miracle du genre tomber-sur-une-page-secrête-en-cache-de-google ne se produise.
Bref, je vais essayer...

merci pour l'idée

Poste le Thursday 13 April 2006 13:56:55
Répondre     Citer    
Re: hotplug et les clefs usb
Envoyé par: der_encoreoubliemonpasswd

Bon, j'ai installer udev et pour des raisons différentes j'ai toujours le même problème : impossible déterminer le quel périphérique correspond à la clef usb.

Voici la règle UDEV qui pose problème
KERNEL=="sd*[0-9]|dasd*[0-9]",      ENV{ID_SERIAL}=="?*", \
    SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n", \
    RUN+="/home/der/bin/notify USB MASS-STORAGE `echo $devpath | sed -n 's/^.*\/\(.*\)$/\1/p'`"

- notify est juste un tout petit script qui écrit sa ligne de commande dans un fifo.
- $devpath est le chemin de je-ne-sais-pas-vraiment-quoi-pour-être-honnête.
quand le périphérique crée est /dev/sda, par exemple, $devpath contient /block/sda/sda1
d'où l'ingénieuse(*) utilisation de sed -n 's/^.*\/\(.*\)$/\1/p' pour ne garder que ce qui est après le dernier '/'

j'ai vérifié les points suivants:
- /home/der/bin/notify USB MASS-STORAGE $devpath envoie bien USB MASS-STORAGE /block/sda/sda1 dans le fifo
- dans un xterm, echo $devpath | sed -n 's/^.*\/\(.*\)$/\1/p' affiche sda1 ( si j'exporte bien /block/sda/sda1 devpath

Qu'est-ce que je ne fais pas bien ?



(*) j'ai hésité à poster pour dire que j'ai réussi une utilisation hyper complexe de sed

Poste le Thursday 27 April 2006 11:59:47
Répondre     Citer    
Re: hotplug et les clefs usb
Envoyé par: der_quiatrouve

J'ai fini par trouver.
Désolé c'était dans un des documents, officiel il me semble, sur UDEV. Je n'avais pas bien lu.

%k contient donc le nom du périphérique crée dans /dev/
RUN+="/home/der/bin/notify USB MASS-STORAGE %k"

Cela dit, si quelqu'un a une explication au fait que le `echo $devtruc | sed 'syntax_barbare_de_sed'` n'était pas correctement évalué dans la règle je suis preneur...

Poste le Thursday 27 April 2006 14:20:30
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
hotplug et les clefs usb
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons