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é.