Uruchamianie skryptu po podłączeniu urządzenia USB

13

Nie zaznaczaj tego jako duplikatu, ponieważ jest to inne pytanie!

Próbuję uruchomić skrypt za każdym razem, gdy pendrive jest podłączony do mojego systemu. Podążyłem za tym i tym pytaniem I to działa, ale wciąż są pewne problemy.

To jest mój plik reguł udev:

ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"

i to jest mój skrypt:

#!/ bin / bash

env> /tmp/env.out
cp -r / media / * nazwa-urządzenia * / * ~ / test /

Mam 2 pytania:

1. Ilekroć podłączam skrypt skryptu urządzenia USB jest wykonywany, ponieważ plik / enmp .out jest generowany w / tmp, ale dane z urządzenia USB nie są kopiowane do katalogu testowego , jeśli uruchomię skrypt ręcznie, to działa dobrze! Dlaczego??

2.Jak mogę uczynić mój plik reguł bardziej ogólnym, aby działał na każdym podłączonym urządzeniu USB bez znajomości jego identyfikatora?

Moim pomysłem jest automatyczne kopiowanie wszystkich danych z podłączonego urządzenia USB na komputer po podłączeniu.

Z góry dziękuję!

Wskaźnik zerowy
źródło
nie tylko próbujesz to zrobić? askubuntu.com/questions/474/…
virtualxtc
@virtualxtc Dzięki za tę sugestię! Ale chcę wiedzieć Co jest złego w tym podejściu?
Wskaźnik
czy możesz mi powiedzieć, co jest nie tak z moim skryptem? Dlaczego to nie działa?
Wskaźnik
Ponadto, tylko jeden na jednego - nauczyłem się na własnej skórze, że takie pytania są zwykle bardziej odpowiednie dla superużytkownika niż askubuntu.
virtualxtc
Gdyby to był problem z uprawnieniami, pojawiłby się, gdy próbowałem uruchomić go ręcznie, prawda?
Wskaźnik

Odpowiedzi:

8

Aby odpowiedzieć na moje pytanie:

1.Script nie działał, ponieważ wymagał sudouprawnień do uruchamiania ..

Rozwiązanie tego:

Spraw, by ten skrypt był sudowykonywalny!

EDYCJA pliku sudoers za pomocą

sudo visudo

Po wierszu 25 (tj. %sudo ALL=(ALL)) Dodaj to

username ALL=(ALL) NOPASSWD: /home/username/my_script.sh

Teraz możemy używać sudotego skryptu bez pytania o hasło sudo

ale może to powodować pewne problemy z bezpieczeństwem, więc skorzystaj z tego linku

2. Odpowiedź na moje drugie pytanie:

Aby skrypt działał na dowolnym podłączonym urządzeniu USB, zmień plik reguł na ten

ACTION=="add", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", RUN+="/usr/local/my_script.sh"

asterik (*) mówi, że należy to zrobić dla każdego podłączonego urządzenia USB!

Otóż ​​to! Upewnij się, że skrypt jest wykonywalny i podłącz USB !!

Cieszyć się!

Wskaźnik zerowy
źródło
0

Spróbuj zastąpić tyldę pełną ścieżką do katalogu domowego. Nie wiem, czy to zadziała, ale mówisz, że skrypt działa, gdy uruchamiasz go bezpośrednio, ale gdy jest uruchamiany automatycznie, nie działa: To sprawia, że ​​myślę, że problem może być związany z uruchomieniem go przez inny użytkownika, gdy jest uruchamiany automatycznie, a tylda przyjmuje różne wartości dla różnych użytkowników.

Toby 1 Kenobi
źródło
Proszę przeczytać komentarze przed odpowiedzią na pytanie
wskaźnik Null
Przeczytałem komentarze, a następnie odpowiedziałem na pytanie. Czy zrobiłem coś nie tak? Do którego komentarza szczególnie się odnosisz?
Toby 1 Kenobi
W komentarzach sugestie te zostały już podane i dla mnie nie zadziałały. Dlatego powiedziałem: przeczytaj komentarze
wskaźnik Null
O tak, przepraszam, ostatnie 5 komentarzy zostało przede mną ukrytych i ich nie zauważyłem. Mój błąd!
Toby 1 Kenobi,
@Nullpointer: edytuj swoje pytanie i zachowaj pełne informacje zawarte w pytaniu, aby ludzie nie musieli czytać komentarzy ... Komentarze nie są częścią pytania ... ;-)
Fabby