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!
Réponses:
Pour répondre à ma propre question:
1.Le script n'était pas en cours d'exécution car il avait besoin de
sudo
droits pour s'exécuter.Solution à cela:
Rendez ce script
sudo
exécutable!MODIFIER le fichier sudoers en utilisant
sudo visudo
Après la ligne 25 (c.-à-d.
%sudo ALL=(ALL)
) Ajoutez ceciusername ALL=(ALL) NOPASSWD: /home/username/my_script.sh
Maintenant, nous pouvons utiliser
sudo
dans ce script sans qu'on nous demande le mot de passe sudomais 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!
la source
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.
la source
Jetez un oeil à cela, la seiche .
la source