@ Glutanimate: to pytanie dotyczy konkretnego dysku flash USB, ale ogólnie pytałem o urządzenie USB
Radu Rădeanu
@ Glutanimate: powiedzmy, że odpowiedzi na to pytanie są pomocne, w każdym razie nie odpowiada, jak automatycznie uruchomić skrypt po odłączeniu urządzenia USB.
Radu Rădeanu
1
„powiedzmy, że odpowiedzi na to pytanie są pomocne, w każdym razie nie odpowiada, jak automatycznie uruchomić skrypt po odłączeniu urządzenia USB”. Zgaduję, że jeśli zmienisz „ACTION = 'dodaj'” na „ACTION = „usuń” ”, to byłby dobry początek.
blujay
Odpowiedzi:
17
Dzięki MinimusHeximus i odpowiednim współautorom wątku, o którym wspomniał w swoim komentarzu do mojego podobnego pytania, myślę, że mogę teraz zaoferować następującą odpowiedź.
Będziesz potrzebować 5 (pięciu) plików dla takiego urządzenia USB w następujący sposób, po prostu wypełniając odpowiednie wartości <fortheseparts>:
Można uchwycić wartości <yourvendorid>i <yourproductid>wprowadzając komendę lsusbw Terminalu - gdy urządzenie USB jest podłączone - co pokaże wszystkie urządzenia USB aktualnie dostępne, jak Bus 003 Device 002: ID 8087:07da Intel Corp., gdzie 8087 jest VendorID i 07da jest ProductID .
I <yourdevice>może to być dowolna dowolna nazwa, którą możesz wybrać dla swojego urządzenia USB, na przykład zdecydowałem się używać nazwy ogólnej „ klawiatura ” podczas tworzenia takich plików dla mojej klawiatury USB, która wymagała zastosowania innego układu klawiatury, gdy jest ona podłączona.
W niektórych scenariuszach może nie być konieczne użycie ACTION=="remove"wiersza w pliku reguł udev, a tym samym powiązanych outplików 2 („)” , gdy nie trzeba nic robić (np. Cofnąć zmianę dokonaną, gdy urządzenie jest podłączony) po odłączeniu urządzenia.
Z mojej nowej perspektywy wygląda to źle. Czy te klauzule nie muszą być na tej samej linii?
nafg
1
Działa to: ACTION == "add", ATTRS {idVendor} == "...", ATTRS {idProduct} == "...", ENV {XAUTHORITY} = "/ home / <user> /.Xauthority" , ENV {DISPLAY} = ": 0", RUN + = "<script>"
nafg
@nafg: z mojego początkującego punktu widzenia nie powinno mieć znaczenia, czy umieścisz je wszystkie w jednym wierszu (używając przecinka jako separatora) w pliku reguł udev, ale widzę, że dodałeś parametry XAUTHORITY i DISPLAY do reguł udev, które może działać dla ciebie lub kogoś innego, w takim przypadku zastanawiam się, czy nie są już potrzebne w dwóch plikach skryptu poniżej.
Sadi,
1
tak, o to chodzi, nie potrzebujesz już skryptu pośredniego (z wyjątkiem być może umieszczenia rzeczywistego skryptu w tle), ponieważ udev pozwala ci ustawić środowisko. Z mojego dokumentu udev rozumiem również, że każda linia jest niezależną regułą, wiersze w pliku nie są łączone.
nafg
@nafg: Dziękujemy za cenny wkład. Przeniosłem te środowiska, aby rządziły udev i to też działało dla mnie. Ponadto przeniosłem skrypty do / usr / local / bin, ponieważ zacząłem napotykać problemy po przeniesieniu folderu / home na osobną partycję (prawdopodobnie dlatego, że nie został wcześniej zamontowany). Wygląda na to, że używanie podziałów linii w regułach udev nie stwarza żadnych problemów, przynajmniej w moim systemie (Ubuntu 13.04 64-bitowy) i wolałem to dla czytelności.
Odpowiedzi:
Dzięki MinimusHeximus i odpowiednim współautorom wątku, o którym wspomniał w swoim komentarzu do mojego podobnego pytania, myślę, że mogę teraz zaoferować następującą odpowiedź.
Będziesz potrzebować 5 (pięciu) plików dla takiego urządzenia USB w następujący sposób, po prostu wypełniając odpowiednie wartości
<fortheseparts>
:/etc/udev/rules.d/00-usb-<yourdevice>.rules
/usr/local/bin/usb-<yourdevice>-in_udev
/usr/local/bin/usb-<yourdevice>-in
/usr/local/bin/usb-<yourdevice>-out_udev
/usr/local/bin/usb-<yourdevice>-out
Uwagi:
<yourvendorid>
i<yourproductid>
wprowadzając komendęlsusb
w Terminalu - gdy urządzenie USB jest podłączone - co pokaże wszystkie urządzenia USB aktualnie dostępne, jakBus 003 Device 002: ID 8087:07da Intel Corp.
, gdzie 8087 jest VendorID i 07da jest ProductID .<yourdevice>
może to być dowolna dowolna nazwa, którą możesz wybrać dla swojego urządzenia USB, na przykład zdecydowałem się używać nazwy ogólnej „ klawiatura ” podczas tworzenia takich plików dla mojej klawiatury USB, która wymagała zastosowania innego układu klawiatury, gdy jest ona podłączona.ACTION=="remove"
wiersza w pliku reguł udev, a tym samym powiązanychout
plików 2 („)” , gdy nie trzeba nic robić (np. Cofnąć zmianę dokonaną, gdy urządzenie jest podłączony) po odłączeniu urządzenia.źródło
Menedżer plików SpaceFM umożliwia to. Zobacz ustawienia Auto Run , na przykład Auto Run | Po zamontowaniu lub automatycznym uruchomieniu | Po odmontowaniu .
źródło