Regra do Udev para corresponder a qualquer dispositivo de armazenamento usb

9

Como posso implementar regras udev para qualquer dispositivo de armazenamento em massa USB conectado, não apenas para um dispositivo específico? O que deve ser alterado em idVendor e idProduct ?

 ACTION=="add", SUBSYSTEM=="usb", SYSFS{idVendor}=="0204", SYSFS{idProduct}=="6025",
     RUN+="/home/workspace/bash_script.sh"
    
por commandos2389 16.09.2015 / 09:39

1 resposta

6

Um dispositivo de armazenamento está no subsistema block , então você vai querer SUBSYSTEM=="block" em sua regra, assim:

ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
    RUN+="/path/to/script"

Se você estiver usando systemd , poderá executar uma unidade systemd sempre que um dispositivo de armazenamento USB for adicionado. Crie o arquivo da unidade, por exemplo /etc/systemd/system/my-usb-rule.service :

[Service]
Type=oneshot
ExecStart=/path/to/script

e a regra, e. /etc/udev/rules.d/85-my-usb-rule.rules :

ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
    ENV{SYSTEMD_WANTS}="my-usb-rule.service"

Agora, udev acionará my-usb-rule.service (que, por sua vez, executará seu script) em qualquer dispositivo de armazenamento do dispositivo de armazenamento usb.

Não se esqueça de recarregar a configuração depois de editar as regras / unidades:

udevadm control --reload
systemctl daemon-reload
    
por 16.09.2015 / 19:29

Tags