GNU/Linux >> Znalost Linux >  >> Cent OS

Jak spustit skript při připojení nebo odpojení zařízení USB pomocí UDEV

Příspěvek popisuje kroky k vytvoření pravidel UDEV, která spouštějí konkrétní skript, když je připojeno nebo odebráno zařízení USB. Můžeme použít nástroj udevadm k zobrazení informací a vlastností, když je zařízení připojeno nebo odstraněno. Pomocí „subsystem-match=SUBSYSTEM ” Můžeme určit druh zařízení, které je připojeno/odebráno.

1. Například v tomto případě s USB SUBSYSTEM můžete spustit příkaz níže:

# udevadm monitor --kernel --property --subsystem-match=usb
monitor will print the received events for:
KERNEL - the kernel uevent

2. Nyní připojte nebo odeberte zařízení USB, aby se spustila událost UDEV.

3. Níže je uveden příklad výstupu, informace s řádky „<---“ jsou důležité informace, které je třeba vzít v úvahu při nastavení pravidel.

# 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. Pomocí výše uvedeného příkladu můžete vytvořit pravidla pro spouštění skriptů v /etc/udev/rules.d/ . Můžete například vytvořit nový soubor „5-usbstick-font.rules ", se syntaxí podobnou :

# 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. Znovu načtěte pravidlo UDEV spuštěním níže uvedeného příkazu.

# udevadm control --reload

Pokud nyní znovu připojíte nebo odeberete zařízení USB, provede se přizpůsobený skript (jako run-start.sh nebo run-stop.sh).


Cent OS
  1. Jak nastavit vlastní názvy zařízení pomocí udev v CentOS/RHEL 7

  2. Jak spustit skript shellu, když se změní soubor nebo adresář?

  3. Jak spustit skript, když pošta dorazí na poštovní server? (Debian)

  1. Jak spustit shellscript, když připojím USB zařízení

  2. Jak automaticky spustit skript, když se v Linuxu změní obsah adresáře?

  3. Jak zjistit USB verze 1.1 nebo 2.0

  1. Jak spouštět vlastní skripty na zásuvném modulu USB zařízení?

  2. Jak spustit událost ve skriptu Shell, když je odebráno zařízení USB?

  3. Jak spustit skript??