UDev et synchro USB

Salut à tous,
Je pense que la solution est toute bête mais je n’arrive pas à exécuter un programme à l’insertion de ma clef usb.

Ma règle udev:

BUS==“usb”, KERNEL==“sd*”, ATTRS{serial}==“A500000000026452”, ATTRS{product}==“Flash Voyager”, SYMLINK+=“LiveUSB%n"
KERNEL==“sd*”, ACTION==“add”, RUN+=”/usr/bin/synchro.sh"

Mon script est bien exécutable (chmod +x),lorsque je le lance manuellement celui-ci se lance donc je ne comprends pas trop.
Alors dans mon synchro.sh j’ai même mis des bétises du style:

#!/bin/sh
gparted

Encore une fois le script s’exécute à la main mais rien ne se lance.
Même un udevadm control --reload_rules n’y fait rien.

Merci d’avance :slightly_smiling:

[quote]BUS==“usb”, KERNEL==“sd*”, ATTRS{serial}==“A500000000026452”, ATTRS{product}=="$
KERNEL==“sd*”, ACTION==“add”, RUN+="/usr/bin/synchro.sh"[/quote]La ligne en rouge est inachevé. tu dois avoir ici un hexa sur 4 caractères. Le caractère ATTRS{serial} je ne connais pas bien, mais c’est très incertain. Essaye de voir ce qui coince dans les tests en les rajoutants au fur et à mesure à partir de

[quote]BUS==“usb”, KERNEL==“sd*”, ACTION==“add”, RUN+="/usr/bin/synchro.sh[/color]

Je viens d’éditer la ligne :slightly_smiling:
Bah ma clef est bien reconnût dans /dev comme /dev/LiveUSB seulement la règle ne s’éxécute jamais… :confused:

Salut,

Ce script qui ne fonctionne pas encore n’a pas sa place dans T&A :slightly_smiling:

Erf désolé pour l’erreur…
Si un modo peut déplacer dans la section appropriée :slightly_smiling:

La méthode est la suivante:

Faire un script /etc/udev/rules.d/z99action.rules contenant

ACTION=="add", ENV{SUBSYSTEM}=="block", ENV{ID_TYPE}!="" , PROGRAM="/usr/local/bin/action.sh "
Le fichier /usr/local/bin/acrtion.sh est un script bash exécutables qui s’éxécute en tant que root et a accès à plusieurs variables:

[quote]ACTION=“add” (la clef est insérée)
DEVLINKS= chaine de caractère décrivant complètement la clef
DEVPATH="/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/host25/target25:0:0/25:0:0:0/block/sdb" et le path vers le périphériques.
DEVTYPE=“disk” c’est un disque amovible (clef USB ici)
DKD_MEDIA_AVAILABLE=“1” (disque valable)
DKD_PARTITION_TABLE=“1” il est partitionné
DKD_PARTITION_TABLE_SCHEME=“mbr” avec un mbr (boutable donc)
ID_BUS=“usb” périphérique USB
ID_INSTANCE="0:0"
ID_MODEL=“USB_DISK_2.0” -> son petit nom
ID_MODEL_ENC= —> son nom plus compliqué
ID_MODEL_ID=“1e00” --> le modèle
ID_PATH="pci-0000:00:1d.7-usb-0:3:1.0-scsi-0:0:0:0"
ID_REVISION=“PMAP"
ID_SERIAL=”_USB_DISK_2.0_07830A3C02B0-0:0"
ID_SERIAL_SHORT=“07830A3C02B0” -> numéro de série court
ID_TYPE="disk"
ID_USB_DRIVER=“usb-storage"
ID_USB_INTERFACES=”:080650:"
ID_USB_INTERFACE_NUM=“00"
ID_VENDOR_ENC=”\x20\x20\x20\x20\x20\x20\x20\x20"
ID_VENDOR_ID="13fe"
MAJOR="8"
MINOR=“16"
OLDPWD
PWD=”/"
SEQNUM="2384"
SHLVL="1"
SUBSYSTEM="block"
UDEV_LOG=“3”
[/quote]

avec ça tu peux faire une action pour un pérphérique précis

Parfait ça marche :slightly_smiling:
Merci beaucoup