правила udev, предназначающиеся для каждого USB-устройства

Я пытаюсь выполнить сценарий каждый раз, когда USB включается. То, что я в настоящее время имею, является демонстрационным сценарием в /usr/local/test.sh:

#!/bin/bash

touch /home/kfir/test.txt

У меня также есть файл правил, который пытается соответствовать ЛЮБОМУ USB в /etc/udev/rules.d/100-usb.rules:

ACTION=="add", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", RUN+="/usr/local/test.sh"

Проблема состоит в том что test.txt файл никогда не создается. Я также получаю следующую ошибку:

error message

Я невежествен с того, что сделать теперь. То, чего я хочу достигнуть, довольно просто, когда существует включаемое устройство хранения USB, запустите простой скрипт (создающий файл test.txt в этом случае).

P.S. test.sh файл хорошо работает. Когда я вручную выполнил его, это создает test.txt файл.

5
задан 4 September 2015 в 07:06

2 ответа

Каждое USB-устройство? Используйте эту простую строку в /etc/udev/rules.d/100-usb.rules

ACTION=="add", RUN+="/bin/mkdir /tmp/folder1"

и перезапустите udev

sudo service udev restart
<час>

, Это потребляемо

ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", 
5
ответ дан 23 November 2019 в 08:55
  • Они ATTRS{idVendor}=="****", ATTRS{idProduct}=="****" будьте нацелены на что-либо, Вы могли отбросить их от правила.

  • Однако тот путь это будет инициировано для многих древовидных узлов и для всего устройства даже не USB.

    Попробуйте это правило, которые предназначаются для единственного узла и только USB-устройств:

    ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usb", RUN+="/usr/local/test.sh"
    
  • Как я получил это:

    1. Выполненный udevadm monitor -u
    2. Включите флеш-накопитель, он производит то же как это:

      UDEV  [13394.985946] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3 (usb)                                                                        
      UDEV  [13394.991173] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0 (usb)                                                                
      UDEV  [13394.992509] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9 (scsi)                                                         
      UDEV  [13394.993436] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/scsi_host/host9 (scsi_host)                                    
      UDEV  [13395.978250] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0 (scsi)                                             
      UDEV  [13395.979665] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0 (scsi)                                     
      UDEV  [13395.980363] add      /devices/virtual/bdi/8:32 (bdi)                                                                                        
      UDEV  [13395.981822] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0/scsi_disk/9:0:0:0 (scsi_disk)              
      UDEV  [13395.982998] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0/bsg/9:0:0:0 (bsg)                          
      UDEV  [13395.983447] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0/scsi_device/9:0:0:0 (scsi_device)          
      UDEV  [13395.983970] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0/scsi_generic/sg4 (scsi_generic)            
      UDEV  [13396.473531] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0/block/sdc (block)                          
      UDEV  [13396.528471] add      /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0/block/sdc/sdc1 (block)
      
    3. Возьмите главную проверку узла его использование атрибутов:

      udevadm info -a --path=/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3
      

      Вывод:

      Udevadm info starts with the device specified by the devpath and then
      walks up the chain of parent devices. It prints for every device
      found, all possible attributes in the udev rules key format.
      A rule to match, can be composed by the attributes of the device
      and the attributes from one single parent device.
      
        looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-3':
          KERNEL=="1-3"
          SUBSYSTEM=="usb"
          DRIVER=="usb"
          ATTR{bDeviceSubClass}=="00"
          ATTR{bDeviceProtocol}=="00"
          ATTR{devpath}=="3"
          ATTR{idVendor}=="125f"
          ATTR{speed}=="480"
          ATTR{bNumInterfaces}==" 1"
          ATTR{bConfigurationValue}=="1"
          ATTR{bMaxPacketSize0}=="64"
          ATTR{busnum}=="1"
          ATTR{devnum}=="5"
          ATTR{configuration}==""
          ATTR{bMaxPower}=="98mA"
          ATTR{authorized}=="1"
          ATTR{bmAttributes}=="80"
          ATTR{bNumConfigurations}=="1"
          ATTR{maxchild}=="0"
          ATTR{bcdDevice}=="0100"
          ATTR{avoid_reset_quirk}=="0"
          ATTR{quirks}=="0x0"
          ATTR{serial}=="2b712383811292"
          ATTR{version}==" 2.00"
          ATTR{urbnum}=="673"
          ATTR{ltm_capable}=="no"
          ATTR{manufacturer}=="ADATA"
          ATTR{removable}=="unknown"
          ATTR{idProduct}=="c96a"
          ATTR{bDeviceClass}=="00"
          ATTR{product}=="ADATA USB Flash Drive"
      
    4. Теперь, мы проверили только 1 устройство, если мы проверяем больше устройств: телефон, мышь... мы узнаем это SUBSYSTEM=="usb" и DRIVER=="usb" то же для всех USB-устройств. Таким образом, они могут использоваться для соответствия правила.

4
ответ дан 23 November 2019 в 08:55

Другие вопросы по тегам:

Похожие вопросы: