Você digitou incorretamente ATTR, deve ser ATTRS neste caso.
Eu criei um udev
regras que é suposto montar um dispositivo USB, fazer backup de alguns dados e limpar tudo. Eu estou realmente trabalhando em um servidor Debian
.
Existem as informações sobre o meu dispositivo usb que tenho com lsusb
Bus 001 Device 003: ID 054c:0243 Sony Corp. MicroVault Flash Drive
(Na verdade, o lsusb
retorna mais Bus / Device, mas eu tenho que escrevê-los manualmente, já que não estou postando da minha máquina Debian:))
Então eu escrevi minha regra udev
chamada:
10-usb_back.rules
para:
/etc/udev/rules.d/
(eu usei 95 porque o script de backup leva alguns segundos e eu quero executá-lo o mais atrasado possível para evitar atrasar outras coisas)
E finalmente a regra em si:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", ATTR{idProduct}=="0243", RUN+="/usr/local/bin/mount_usb"
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", ATTR{idProduct}=="0243", RUN+="/usr/local/bin/backup_database"
Eu também tentei isso:
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="054c", ATTR{idProduct}=="0234", RUN+="bash /usr/local/bin/mount_usb"
Sem sucesso: (
Então eu reinicio o udev
sudo /etc/init.d/udev restart
E quando eu conecto meu dispositivo USB, recebo esta mensagem estranha:
[1348.295280] sd 6:0:0:0: [sdc] Assuming drive cache: write through
duas vezes
Mas nada aconteceu. Nenhum dispositivo USB montado, nenhum dado de backup.
I looked with tail -f /var/log/message
E a unidade USB parece ter sido detectada:
usb 1-3: Product Storage Media
usb 1-3 Manufacturer Sony'
...
Algo deve estar errado em algum lugar, mas eu não sei o que, nem onde: (
Edit: Desde que eu tenho sido um pouco preguiçoso porque eu não posso reescrever tudo do meu servidor, por favor, solicite mais informações, se necessário, como o script ou mais mensagens de logs:)
Você digitou incorretamente ATTR, deve ser ATTRS neste caso.
Esses erros de digitação não estão na parte idProduct
das regras?
Você tem isso:
ATTR{idProduct}=="0234"
Não deveria ser isso:
ATTR{idProduct}=="0243"
Com base na saída desta linha:
Bus 001 Device 003: ID 054c:0243 Sony Corp. MicroVault Flash Drive
Tente dar uma olhada na saída de udevadm info --path=path/to/device --attribute-walk
. Ele informará todos os atributos e subsistemas válidos para o dispositivo. Por exemplo, um dispositivo USB que eu tenho tem um SUBSYSTEM="tty"
, para reconhecer USB para esse dispositivo você precisa colocar SUBSYSTEMS=="usb"
(nota: plural subsistema * s *). Eu suspeito que algo assim pode ser o caso aqui. De qualquer forma, o udevadm info --attribute-walk
é uma ferramenta realmente útil para depurar problemas do udev.
Além disso, ATTR {key} não é válido, em vez disso, use ATTRS {key} (foi mencionado antes, mas alguns de seus exemplos ainda usam o formulário incorreto.)