Bonjour le bouchot,
J'essaie depuis une heure de trouver comment déclencher quelques évènements bien particuliers (et très divers) lorsque que je branche ma clé USB.
J'ai commencé à regarder du coté de hotplug : il faut que je créé une entrée dans /etc/hotplug/usb/handmap du style :
# usb module match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info
(source /lib/modules/$(uname -r)/modules.usbmap
Là les problèmes commencent ... Je ne vois pas ou trouver certaines infos nécessaires. En effet, match_flag n'apparait ni dans /proc/bus/usb/devices, ni dans lsusb -vv, ...
Une idée quant à la manière de procéder pour récupérer ces infos ?
(Tant qu'à faire, j'aimerai que ça fonctionne juste avec hotplug, pas avec un autre soft du genre magicdev, etc).
# bon, ...
Posté par jerome (site web personnel) . Évalué à 7.
Pour ceux que ça pourrait intéresser, voilà comment ça se passe :
1. on branche la clé
2. on fait un "lsusb -vv" en root, on colle le tout dans un fichier,
3. on regarde les infos à récupérer à s'inspirant de /etc/hotplug/usb.handmap et le /lib/modules/version_kernel/modules.usbmap,
4. on écrit la ligne qui va bien dans /etc/hotplug/usb.usermap,
5. on écrit le script qui va bien avec et que l'on place dans /etc/hotplug/usb/
Ça devrait marcher.
Pour exemple :
lsusb donne :
idVendor 0x04bb I-O Data Device, Inc.
idProduct 0x0c01
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 5 SFF-8070i
bInterfaceProtocol 80
ce qui donne comme "map" dans /etc/hotplug/usb.usermap :
script.sh 0x0000 0x04bb 0x0c01 0x0000 0x0000 0x00 0x00 0x00 0x08 0x05 0x50 0x00000000
(notons que 80=0x50)
Voilà. Ça marche nickel.
[^] # Re: bon, ...
Posté par jerome (site web personnel) . Évalué à 4.
J'oubliais le script minimal qui va avec ...
#!/bin/sh
USER='cequevousvoulez'
# /dev/sda est créé après l'exec de ce script, donc pour
# faire le gruik, j'attends 2 sec en arrière plan.
(sleep && sudo -u $USER mount /mnt/cle_usb) &
Note : Dans /etc/fstab : /dev/sda /mnt/cle_usb vfat noauto,sync,dirsync,noatime,users 0 0
Amusez vous bien.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.