Odpowiedzi:
Do ogólnego użytku, jeśli chcesz uruchomić swój program dla dowolnej pamięci USB. Użyj sterownika do dopasowania reguły.
Dodaj udev
plik reguł
sudo nano /etc/udev/rules.d/90-detect-storage.rules
Dodaj tę regułę
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram"
Jeśli chcesz, aby twój program rozróżniał dyski, więc uruchamia różne operacje, użyj (możesz przekazać jego numer seryjny lub dowolny atrybut, który ci się podoba):
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram $env{ID_VENDOR_ID} $env{ID_MODEL_ID}"
Załaduj ponownie wszystkie reguły
sudo udevadm control --reload-rules
Odłącz i ponownie podłącz dysk flash
Uwagi:
Użyłem tej reguły tylko do przetestowania, który dziennik jest tworzony po uruchomieniu reguły:
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/bin/sh -c 'echo $env{ID_VENDOR_ID} $env{ID_MODEL_ID} >> /home/username/Desktop/usb-storage.log'"
Możesz skomentować reguły, których nie chcesz, dodając #
na początku wiersza. Plik reguł może zawierać wiele reguł.
Aby sprawdzić wszystkie dostępne env
zmienne, użyj:
ACTION=="add", DRIVERS=="usb-storage", RUN+="/bin/sh -c 'echo == >> /home/username/Desktop/usb-storage-env.log; env >> /home/username/Desktop/usb-storage-env.log'"
Aby sprawdzić parametry używane do dopasowania reguły, uruchom:
sudo udevadm info --name=/dev/sdb1 --attribute-walk
Bibliografia:
Możesz użyć udev
do uruchomienia polecenia albitralnego. Aby to działało, utwórz regułę w /etc/udev/rules.d/
:
sudo nano /etc/udev/rules.d/my-usb-device.rules
I wprowadź:
ACTION=="add", ATTRS{idProduct}=="XXXX", ATTRS{idVendor}=="YYYY", RUN+="/location/of/my/command"
UWAGA: Wartości XXXX
i YYYY
zostaną pobrane z lsusb
wyjścia.