Esecuzione di uno script sul collegamento di un dispositivo USB


13

Per favore, non contrassegnare questo come duplicato in quanto questa è una domanda diversa!

Sto cercando di eseguire uno script ogni volta che un pendrive è collegato al mio sistema. Ho seguito questa e questa domanda e funziona, ma ci sono ancora alcuni problemi.

Questo è il mio file delle regole udev:

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

e questa è la mia sceneggiatura:

#!/ Bin / bash

env> /tmp/env.out
cp -r / media / * nome-dispositivo * / * ~ / test /

Ho 2 domande:

1.Quando collego lo script del mio dispositivo USB viene eseguito perché un file env.out viene generato in / tmp ma i dati dal dispositivo USB non vengono copiati nella directory di test , se eseguo lo script manualmente allora funziona bene! Perché??

2.Come posso rendere il mio file delle regole più generale in modo che funzioni per qualsiasi dispositivo USB collegato senza conoscerne l'ID?

La mia idea è quella di copiare automaticamente tutti i dati dal dispositivo USB collegato al mio computer, quando è collegato.

Grazie in anticipo!


non stai solo cercando di farlo? askubuntu.com/questions/474/…
virtualxtc

@virtualxtc Grazie per questo suggerimento! Ma voglio sapere cosa c'è di sbagliato in questo approccio?
Puntatore null

puoi per favore dirmi cosa c'è che non va nella mia sceneggiatura? Perché non funziona?
Puntatore null

Inoltre, solo un avvertimento: ho imparato a fondo che domande specifiche come questa di solito sono più adatte per superutente che askubuntu.
virtualxtc

Se questo fosse stato il problema delle autorizzazioni, sarebbe apparso quando avrei provato a eseguirlo manualmente, no?
Puntatore null

Risposte:


8

Per rispondere alla mia domanda:

1.Script non era in esecuzione perché aveva bisogno dei sudodiritti per essere eseguito.

Soluzione a questo:

Rendi sudoeseguibile questo script !

EDIT sudoers file using

sudo visudo

Dopo la riga 25 (es. %sudo ALL=(ALL)) Aggiungi questo

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

Ora possiamo usare sudoin questo script senza che ci venga richiesta la password sudo

ma può causare alcuni problemi di sicurezza, quindi fai riferimento a questo link

2. Rispondi alla mia seconda domanda:

Per far funzionare questo script per qualsiasi dispositivo USB collegato, modificare il file delle regole in questo

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

asterik (*) dice che questo dovrebbe essere fatto per ogni dispositivo USB collegato!

Questo è tutto! Assicurati che lo script sia eseguibile e collega la tua USB !!

Godere!


0

Prova a sostituire la tilde con il percorso completo della tua home directory. Non so se funzionerà, ma dici che lo script funziona quando lo esegui direttamente, ma quando viene eseguito automaticamente non lo fa: questo mi fa pensare che il problema potrebbe essere dovuto al fatto che è gestito da un altro utente quando viene eseguito automaticamente e la tilde si risolve in valori diversi per utenti diversi.


Si prega di leggere i commenti prima di rispondere alla domanda
puntatore nullo

Ho letto i commenti, poi ho risposto alla domanda. Ho fatto qualcosa di male? A quale commento in particolare ti riferisci?
Toby 1 Kenobi,

Nei commenti questi suggerimenti sono già stati forniti e non hanno funzionato per me ... ecco perché ho detto di leggere i commenti
Puntatore nullo

Oh sì, scusa, gli ultimi 5 commenti mi sono stati nascosti e non li ho notati. Errore mio!
Toby 1 Kenobi,

@Nullpointer: modifica la tua domanda e mantieni le informazioni complete nella domanda in modo che le persone non debbano leggere i commenti ... I commenti non fanno parte della domanda ... ;-)
Fabby

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.