Le message décrit les étapes pour créer des règles UDEV qui exécutent un script spécifique lorsqu'un périphérique USB est connecté ou retiré. Nous pouvons utiliser l'outil udevadm pour voir les informations et les propriétés lorsqu'un périphérique est connecté ou supprimé. Utilisation de "subsystem-match=SUBSYSTEM ” Nous pouvons déterminer le type d'appareil qui est connecté/retiré.
1. Par exemple, dans ce cas avec un SOUS-SYSTÈME USB, vous pouvez exécuter la commande ci-dessous :
# udevadm monitor --kernel --property --subsystem-match=usb monitor will print the received events for: KERNEL - the kernel uevent
2. Maintenant, connectez ou retirez le périphérique USB pour déclencher un événement UDEV.
3. Vous trouverez ci-dessous l'exemple de sortie, les informations avec les lignes "<---" sont des informations importantes à prendre en compte pour définir les règles.
# udevadm monitor --kernel --property --subsystem-match=usb
monitor will print the received events for:
KERNEL - the kernel uevent
KERNEL[6147.486744] add /devices/pci0000:00/0000:00:0c.0/usb1/1-2 (usb)
ACTION=add <--------------------------------------------------------- ACTION of the device
BUSNUM=001
DEVNAME=/dev/bus/usb/001/010
DEVNUM=010
DEVPATH=/devices/pci0000:00/0000:00:0c.0/usb1/1-2
DEVTYPE=usb_device
MAJOR=189
MINOR=9
PRODUCT=90c/1000/1100 <--------------------------------------------------------- ENV{PRODUCT}
SEQNUM=2192
SUBSYSTEM=usb <--------------------------------------------------------- " SUBSYSTEM=="type_of_device"
TYPE=0/0/0
KERNEL[6147.489141] add /devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0
DEVTYPE=usb_interface
INTERFACE=8/6/80
MODALIAS=usb:v090Cp1000d1100dc00dsc00dp00ic08isc06ip50in00
PRODUCT=90c/1000/1100
SEQNUM=2193
SUBSYSTEM=usb
TYPE=0/0/0
KERNEL[6206.530205] remove /devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0 (usb)
ACTION=remove <--------------------------------------------------------- ACTION of the device
DEVPATH=/devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0
DEVTYPE=usb_interface
INTERFACE=8/6/80
MODALIAS=usb:v090Cp1000d1100dc00dsc00dp00ic08isc06ip50in00
PRODUCT=90c/1000/1100 <--------------------------------------------------------- ENV{PRODUCT}
SEQNUM=2216
SUBSYSTEM=usb <--------------------------------------------------------- " SUBSYSTEM=="type_of_device"
TYPE=0/0/0
KERNEL[6206.530551] remove /devices/pci0000:00/0000:00:0c.0/usb1/1-2 (usb)
ACTION=remove
BUSNUM=001
DEVNAME=/dev/bus/usb/001/010
DEVNUM=010
DEVPATH=/devices/pci0000:00/0000:00:0c.0/usb1/1-2
DEVTYPE=usb_device
MAJOR=189
MINOR=9
PRODUCT=90c/1000/1100
SEQNUM=2217
SUBSYSTEM=usb
TYPE=0/0/0 4. En utilisant l'exemple ci-dessus, vous pouvez créer les règles pour exécuter des scripts dans /etc/udev/rules.d/ . Par exemple, vous pouvez créer un nouveau fichier "5-usbstick-font.rules ", avec une syntaxe similaire à :
# cat /etc/udev/rules.d/5-usbstick-font.rules
ACTION=="add", SUBSYSTEM=="usb", ENV{PRODUCT}=="90c/1000/1100", RUN=="/bin/su godiego --command='/home/godiego/run-start.sh'"
ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="90c/1000/1100", RUN+="/bin/su godiego --command='/home/godiego/run-stop.sh'" 5. Rechargez la règle UDEV en exécutant la commande ci-dessous.
# udevadm control --reload
Maintenant, si vous connectez ou retirez à nouveau le périphérique USB, le script personnalisé (comme run-start.sh ou run-stop.sh) sera exécuté.