La publicación describe los pasos para crear reglas UDEV que ejecutan un script específico cuando se conecta o retira un dispositivo USB. Podemos usar la herramienta udevadm para ver la información y las propiedades cuando se conecta o se quita un dispositivo. Usando el “subsystem-match=SUBSYSTEM ” Podemos determinar el tipo de dispositivo que está conectado/retirado.
1. Por ejemplo, en este caso con un SUBSISTEMA USB, puede ejecutar el siguiente comando:
# udevadm monitor --kernel --property --subsystem-match=usb monitor will print the received events for: KERNEL - the kernel uevent
2. Ahora, conecte o retire el dispositivo USB para activar un evento UDEV.
3. A continuación se muestra el ejemplo de salida, la información con líneas "<---" es información importante a considerar para establecer las reglas.
# 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. Utilizando el ejemplo anterior, puede crear las reglas para ejecutar scripts en /etc/udev/rules.d/ . Por ejemplo, puede crear un nuevo archivo "5-usbstick-font.rules ", con una sintaxis similar a :
# 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. Vuelva a cargar la regla UDEV ejecutando el siguiente comando.
# udevadm control --reload
Ahora, si vuelve a conectar o quitar el dispositivo USB, se ejecutará el script personalizado (como run-start.sh o run-stop.sh).