Estou tentando fazer uma tarefa "simples", executar um script /usr/local/bin/USBTesting.sh
quando eu conectar um dispositivo USB específico.
Eu criei /lib/udev/rules.d/99-USBTesting.rules /etc/udev/rules.d/10-USBTesting.rules
porque eu não tinha certeza sobre onde deveria colocá-los.
Para o conteúdo desses arquivos, usei todos os itens a seguir (um por um):
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, claro, emitiu o infame sudo udevadm control --reload-rules
e até mesmo reiniciou o meu Laptop "apenas no caso" algumas vezes.
O conteúdo do /usr/local/bin/USBTesting.sh
:
#!/bin/sh -e
set -u
echo $(date) Started >> /tmp/USBTesting.txt
echo $(date) Started >> /home/elemer/USBTesting.txt
Nada complicado, apenas testando no momento. sudo chmod +x /usr/local/bin/USBTesting.sh
foi aplicado.
Se eu executar /usr/local/bin/USBTesting.sh
, ele faz o que deveria.
Estou realmente ficando sem ideias. Alguém conseguiu obter algo semelhante trabalhando em um 14.04.1 LTS do Ubuntu? Gostaria de ouvir a solução correta.
EDITAR:
RUN+=“/usr/local/bin/USBTesting.sh”
esta estava na minha regra do udev RUN+="/usr/local/bin/USBTesting.sh"
este é o correto Um olho destreinado (como o meu) não detectará a diferença. “
e "
são diferentes. E parece que faz a diferença.
Minha nova regra do udev se parece com:
SUBSYSTEM=="usb", ATTRS{serial}=="f88331611c905b", RUN+="/usr/local/bin/USBTesting.sh"
ou
SUBSYSTEM=="usb", ATTRS{idVendor}=="18a5", ATTRS{serial}=="f88331611c905b", ATTRS{manufacturer}=="Verbatim", ATTRS{idProduct}=="0304", RUN+="/usr/local/bin/USBTesting.sh"
- obteve essas informações de udevadm info -a -n sdc
- talvez seja necessário alterar sdc
para você.
Agora meu script é acionado, mas duas vezes para cada plug-in.
EDIT 2:
Acontece que eu tive que adicionar ENV{DEVTYPE}=="usb_device"
à regra e agora ela é executada apenas uma vez. É assim que minha regra se parece agora.
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="18a5", ATTRS{serial}=="f88331611c905b", ATTRS{manufacturer}=="Verbatim", ATTRS{idProduct}=="0304", RUN+="/usr/local/bin/USBTesting"