Exécution d'un script lors de la connexion d'un périphérique USB

13

Veuillez ne pas marquer ceci comme doublon car c'est une question différente!

J'essaie d'exécuter un script chaque fois qu'une clé USB est connectée à mon système. J'ai suivi ceci et cette question. Et cela fonctionne, mais il y a toujours des problèmes.

Voici mon fichier de règles udev:

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

et voici mon script:

#!/ bin / bash

env> /tmp/env.out
cp -r / media / * nom-périphérique * / * ~ / test /

J'ai 2 questions:

1.Lorsque je branche mon script de périphérique USB, car un fichier env.out est généré dans / tmp mais les données du périphérique USB ne sont pas copiées dans le répertoire de test , si j'exécute le script manuellement, cela fonctionne bien! Pourquoi??

2.Comment rendre mon fichier de règles plus général afin qu'il fonctionne pour tout périphérique USB connecté sans connaître son ID?

Mon idée derrière cela est de copier toutes les données du périphérique USB connecté vers mon ordinateur automatiquement, lorsqu'il est connecté.

Merci d'avance!

Pointeur nul
la source
n'essayez-vous pas simplement de faire cela? askubuntu.com/questions/474/…
virtualxtc
@virtualxtc Merci pour cette suggestion! Mais je veux savoir Quel est le problème avec cette approche?
Pointeur nul le
pouvez-vous s'il vous plaît me dire ce qui ne va pas avec mon script? Pourquoi ça ne marche pas?
Pointeur nul le
En outre, juste un avertissement - j'ai appris à la dure que des questions spécifiques comme celle-ci conviennent généralement mieux au superutilisateur qu'à askubuntu.
virtualxtc
Si cela avait été le problème des autorisations, cela se serait produit lorsque j'ai essayé de l'exécuter manuellement, n'est-ce pas?
Pointeur nul le

Réponses:

8

Pour répondre à ma propre question:

1.Le script n'était pas en cours d'exécution car il avait besoin de sudodroits pour s'exécuter.

Solution à cela:

Rendez ce script sudoexécutable!

MODIFIER le fichier sudoers en utilisant

sudo visudo

Après la ligne 25 (c.-à-d. %sudo ALL=(ALL)) Ajoutez ceci

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

Maintenant, nous pouvons utiliser sudodans ce script sans qu'on nous demande le mot de passe sudo

mais cela peut entraîner des problèmes de sécurité, veuillez donc consulter ce lien

2. réponse à ma deuxième question:

Pour que ce script fonctionne pour tout périphérique USB connecté, modifiez le fichier de règles en

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

asterik (*) indique que cela doit être fait pour chaque périphérique USB connecté!

C'est ça! Assurez-vous que le script est exécutable et branchez votre clé USB !!

Prendre plaisir!

Pointeur nul
la source
0

Essayez de remplacer le tilde par le chemin d'accès complet à votre répertoire personnel. Je ne sais pas si cela fonctionnera, mais vous dites que le script fonctionne lorsque vous l'exécutez directement, mais lorsqu'il est exécuté automatiquement, il ne fonctionne pas: cela me fait penser que le problème pourrait être lié à son exécution par un autre utilisateur lorsqu'il est exécuté automatiquement, et le tilde se résout en différentes valeurs pour différents utilisateurs.

Toby 1 Kenobi
la source
Veuillez lire les commentaires avant de répondre à la question
Pointeur nul
J'ai lu les commentaires, puis j'ai répondu à la question. Est-ce que j'ai fait quelque chose de mal? De quel commentaire en particulier parlez-vous?
Toby 1 Kenobi
Dans les commentaires, ces suggestions ont déjà été données et elles n'ont pas fonctionné pour moi .. c'est pourquoi j'ai dit lire les commentaires
Pointeur nul
Oh oui, désolé, les 5 derniers commentaires m'ont été cachés et je ne les ai pas remarqués. Mon erreur!
Toby 1 Kenobi
@Nullpointer: veuillez modifier votre question et conserver les informations complètes dans la question afin que les gens n'aient pas besoin de lire les commentaires ... Les commentaires ne font pas partie de la question ... ;-)
Fabby