Un périphérique de stockage est dans le block
sous - système, vous voudrez donc SUBSYSTEM=="block"
dans votre règle, comme ceci:
ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
RUN+="/path/to/script"
Si vous utilisez systemd
, vous pouvez exécuter une systemd
unité chaque fois qu'un périphérique de stockage USB est ajouté. Créez le fichier d'unité, par exemple /etc/systemd/system/my-usb-rule.service
:
[Service]
Type=oneshot
ExecStart=/path/to/script
et la règle, par exemple /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"
Maintenant udev
, déclenchera my-usb-rule.service
(qui à son tour exécutera votre script) sur tout événement d' ajout de périphérique de stockage USB .
N'oubliez pas de recharger la configuration après avoir édité les règles / unités:
udevadm control --reload
systemctl daemon-reload
SUBSYSTEM=="block", SUBSYSTEMS=="usb"
(notez la différence avec le S ). Je doute que cela puisse toujours fonctionner avecENV{ID_BUS}=="usb"
dans la réponse d'origine, car je vois la valeur scsi ici. Mais je travaille sur un problème légèrement différent de celui initialement demandé, je veux une clé USB (clé USB), mais pas de disques externes.ENV{ID_BUS}
valeur n'est pas la même sur tous les systèmes. Hier, je travaillais sur un ancien système avec udev 210 (je crois. Je ne peux pas vérifier maintenant car la machine n'est pas sur Internet), la valeur était scsi . Maintenant, je suis sur une machine plus récente avec udev 228 et la valeur est USB . Pour la même clé USB, je la porte avec moi. (Je ne sais pas si la version udev est le facteur pertinent ici, pourrait également être le noyau ou tout autre package installant les règles udev, e, g, udisks2). PourtantSUBSYSTEM=="block", SUBSYSTEMS=="usb"
(note S ) pourrait être portable et sûr.