Sto cercando di eseguire un'attività "semplice", eseguire uno script /usr/local/bin/USBTesting.sh
quando collego un dispositivo USB specifico. Ho creato /lib/udev/rules.d/99-USBTesting.rules /etc/udev/rules.d/10-USBTesting.rules
perché 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-rules
e 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.sh
fa 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"