GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment exécuter un script lorsque des périphériques USB sont connectés ou supprimés à l'aide d'UDEV

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


Cent OS
  1. Comment définir des noms de périphériques personnalisés à l'aide d'udev dans CentOS/RHEL 7

  2. CentOS/RHEL - Comment exécuter un script ou une commande lorsqu'un utilisateur se déconnecte de la session ssh

  3. Comment désactiver l'accès en écriture aux périphériques USB à l'aide de l'outil "hdparm"

  4. Utilisation des règles udev pour exécuter un script sur l'insertion USB

  5. Comment exécuter un shellscript lorsque je branche un périphérique USB

Comment exécuter un script bash {7 méthodes}

Comment configurer les interfaces réseau à l'aide de NMCLI sur Centos 7.6

Comment créer et exécuter un script Shell dans CentOS 8

Comment exécuter un script Python en PHP

Comment exécuter un script bash

Comment afficher une notification lorsqu'un périphérique USB est inséré ?