Sto cercando di eseguire un'attività "semplice", eseguire uno script /usr/local/bin/USBTesting.shquando collego un dispositivo USB specifico. Ho creato /lib/udev/rules.d/99-USBTesting.rules /etc/udev/rules.d/10-USBTesting.rulesperché non ero sicuro di dove dovevo metterli. Per il contenuto di questi file ho usato tutti i seguenti (uno per uno):
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”
E naturalmente ha rilasciato il famigerato sudo udevadm control --reload-rulese ha persino riavviato il mio laptop "per ogni evenienza" un paio di volte.
Il contenuto di /usr/local/bin/USBTesting.sh:
#!/bin/sh -e
set -u
echo $(date) Started >> /tmp/USBTesting.txt
echo $(date) Started >> /home/elemer/USBTesting.txt
Niente di complicato, solo testandolo al momento. sudo chmod +x /usr/local/bin/USBTesting.shè stato applicato. Se corro /usr/local/bin/USBTesting.shfa quello che dovrebbe.
Sto davvero esaurendo le idee. Qualcuno è riuscito a far funzionare qualcosa di simile su un Ubuntu 14.04.1 LTS? Vorrei sentire la soluzione corretta.
EDIT:
RUN+=“/usr/local/bin/USBTesting.sh”questo era nella mia regola udev RUN+="/usr/local/bin/USBTesting.sh"questo è quello corretto Un occhio non allenato (come il mio) non individuerà la differenza. “e "sono diversi. E sembra che faccia la differenza.
La mia nuova regola udev è simile a:
SUBSYSTEM=="usb", ATTRS{serial}=="f88331611c905b", RUN+="/usr/local/bin/USBTesting.sh"o
SUBSYSTEM=="usb", ATTRS{idVendor}=="18a5", ATTRS{serial}=="f88331611c905b", ATTRS{manufacturer}=="Verbatim", ATTRS{idProduct}=="0304", RUN+="/usr/local/bin/USBTesting.sh" - Ho ricevuto queste informazioni udevadm info -a -n sdc- Potrebbe essere necessario modificarle sdc.
Ora il mio script viene attivato ma due volte per ogni plugin.
EDIT 2: Si scopre che ho dovuto aggiungere ENV{DEVTYPE}=="usb_device"alla regola, e ora viene eseguito solo una volta. Ecco come appare la mia regola ora.
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="18a5", ATTRS{serial}=="f88331611c905b", ATTRS{manufacturer}=="Verbatim", ATTRS{idProduct}=="0304", RUN+="/usr/local/bin/USBTesting"