Я пытаюсь выполнить "простую" задачу: запустить скрипт /usr/local/bin/USBTesting.sh
при подключении определенного USB-устройства.
Я создал /lib/udev/rules.d/99-USBTesting.rules /etc/udev/rules.d/10-USBTesting.rules
потому что я не знал , куда их поместить.
Для содержимого этих файлов я использовал все следующее (одно за другим):
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="18a5", ATTRS{idProduct}=="0304", RUN+="/usr/local/bin/USBTesting.sh"
ACTION==“add”, SUBSYSTEM==“usb_device”, SYSFS{idVendor}==“18a5”, SYSFS{idProduct}==“0304”, RUN+=“/usr/local/bin/USBTesting.sh”
ACTION=="add", KERNEL=="sd[a-z]*", RUN+=“/usr/local/bin/USBTesting.sh”
SYSFS{idVendor}==“18a5”, SYSFS{idProduct}==“0304”, RUN+=“/usr/local/bin/USBTesting.sh”
ACTION==“add”, SUBSYSTEM==“usb_device”, RUN+=“/usr/local/bin/USBTesting.sh”
ACTION==“add”, KERNEL=="sd*[!0-9]", RUN+=“/usr/local/bin/USBTesting.sh”
ATTRS{model}=="STORE N GO ", ATTRS{vendor}=="Verbatim", RUN+=“/usr/local/bin/USBTesting.sh”
SUBSYSTEM=="usb", ATTRS{idVendor}=="18a5", ATTRS{idProduct}=="0304", RUN+="/usr/local/bin/USBTesting.sh"
KERNEL=="*", RUN+=“/usr/local/bin/USBTesting.sh”
И, конечно, выпустил печально известный sudo udevadm control --reload-rules
и даже несколько раз перезапустил мой ноутбук "на всякий случай".
Содержимое /usr/local/bin/USBTesting.sh
:
#!/bin/sh -e
set -u
echo $(date) Started >> /tmp/USBTesting.txt
echo $(date) Started >> /home/elemer/USBTesting.txt
Ничего сложного, просто тестирую на данный момент. sudo chmod +x /usr/local/bin/USBTesting.sh
был применен.
Если я запускаю /usr/local/bin/USBTesting.sh
он делает то, что должен.
У меня действительно заканчиваются идеи. Кому-нибудь удалось получить что-то подобное, работающее на Ubuntu 14.04.1 LTS? Хотелось бы услышать правильное решение.
РЕДАКТИРОВАТЬ:RUN+=“/usr/local/bin/USBTesting.sh”
это было в моем правиле udev. RUN+="/usr/local/bin/USBTesting.sh"
это правильный. Неподготовленный глаз (как мой) не будет Найди отличие. “
И "
разные. И похоже, что это имеет значение.
Мое новое правило udev выглядит так:SUBSYSTEM=="usb", ATTRS{serial}=="f88331611c905b", RUN+="/usr/local/bin/USBTesting.sh"
или
SUBSYSTEM=="usb", ATTRS{idVendor}=="18a5", ATTRS{serial}=="f88331611c905b", ATTRS{manufacturer}=="Verbatim", ATTRS{idProduct}=="0304", RUN+="/usr/local/bin/USBTesting.sh"
- получил эту информацию от udevadm info -a -n sdc
- возможно, потребуется изменить sdc
на свой.
Теперь мой скрипт запускается, но дважды за каждый плагин.
РЕДАКТИРОВАТЬ 2: Оказывается, я должен был добавить ENV{DEVTYPE}=="usb_device"
к правилу, и теперь оно выполняется только один раз. Вот так теперь выглядит мое правило.
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="18a5", ATTRS{serial}=="f88331611c905b", ATTRS{manufacturer}=="Verbatim", ATTRS{idProduct}=="0304", RUN+="/usr/local/bin/USBTesting"