Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/05/2014, à 14:39

betasub

Script sur insertion d'une clé USB

Bonjour à tous.
Depuis hier, j'essaie de faire fonctionner un script quand j'insère ma clé usb, afin de mettre mes nouveaux podcasts dessus, et nettoyer les vieux, comme ça quand je pars, hop, dans l'autoradio!
Pas de problème sur le script... Pour l'éxécuter, c'est autre chose. Tout d'abord, j'ai essayé en le nommant "autorun.sh", mais je me suis vite rendu compte en parcourant les différents fils que ça n'était pas possible sur une clé formatée en FAT32. Dommage, c'est si simple!

Donc je me suis vite rabattu sur la voie "udev".
Ce qui ne m'arrange pas forcément vu que je dois ensuite le faire sur plusieurs PC mais bon.
C'est là que ça cloche, j'ai lu beaucoup de choses, mais jamais 2 fois les mêmes! Et bon me taper 100 pages de doc pour ça...

J'aimerais tout d'abord savoir comment nommer mon fichier .rules, la priorité est accordée au plus grand nombre? Au plus petit? (j'ai nommé le mien 10-local.rules)

Ensuite, à l'intérieur de ce .rules, SI J'AI BIEN COMPRIS, il suffit de tester que j'ai bien inséré la clé usb, et que c'est bien MA CLÉ et non une autre. Du coup, je serais tenté de mettre un truc du genre...

ACTION=="add", KERNEL=="sdb1", ATTRS{serial}=="0265930C9FF174C6", RUN+="/home/tristan/pod.sh"

Bon bien sûr, ça marche pas en l'état, j'aurais besoin d'un petit coup de pouce.
Merci, Tristan.

Hors ligne

#2 Le 24/05/2014, à 16:07

betasub

Re : Script sur insertion d'une clé USB

Salut à tous, en m'appuyant plus ou moins sur ce que j'ai lu sur le net, j'ai nommé mon fichier "10-usb.rules" pour être sûr que ma règle soit prise en compte en premier.
La règle en elle même est juste un ...

KERNEL=="sd??", ATTRS{vendor}=="SanDisk ", ACTION=="add", RUN+="/home/tristan/pod.sh"

et le pod.sh est un bête "notify-send coucou"

Mais rien n'y fait, nautilus se contente d'ouvrir la clé lorsque que je la connecte, et rien d'autre... sad


PS : En recherchant un peu plus, j'ai réussi à faire marcher quelque chose.
Déjà, j'ai placé le script dans /etc/udev , et il veut bien fonctionner.
Ensuite, je suis parti de la base, et j'ai fait une règle de plus en plus "restrictive". En effet, au début, il m'écrivait 10 fois coucou...

DRIVERS=="usb", KERNEL=="sd??", ATTRS{serial}=="0265930C9FF174C6", ACTION=="add", RUN+="/etc/udev/pod.sh"
J'ai commencé avec DRIVERS=="usb" puis j'ai rajouté KERNEL, serial et action pour ne pas éxécuter le script lorsque j'enlève la clé... bref.
j'ai modifié pod.sh  ce qui donne  echo coucou>>/home/tristan/Bureau/testlog (notify-send fonctionne dans un terminal mais pas dans le script, il faudra que je voie ça car j'aimerais être prévenu à la fin de la synchro)

PAR CONTRE, quand je veux faire echo coucou>>/media/tristan/4A82-3D81/testlogusb

il y a soucis, ça ne fonctionne pas. Sûrement que la clé n'est pas monté à l'éxécution du script? Que faire?
Je vous écris mon avancée en temps réel si quelqu'un peut m'aider entre temps...

Merci, Tristan.

Dernière modification par betasub (Le 24/05/2014, à 17:32)

Hors ligne

#3 Le 24/05/2014, à 20:03

betasub

Re : Script sur insertion d'une clé USB

J'ai trouvé solution à mon problème, en étant méthodique, par étape, alors je vais expliquer comment j'ai fait, les aguerris trouveront bête, les novices apprécieront...

Tout d'abord, je recherche les infos de ma clé usb avec les commandes suivantes...
"blkid" qui me donne les différentes partitions des différents disques et les UUID, et "udevadm info -a -n /dev/sdb1" (où sdb1 peut être sde1, sdc1... enfin ce que donnera blkid) qui va me donner tout un tas de paramètres sur le media, différentes clés.

Ensuite, je crée dans /etc/udev/rules.d une règle. Je la nomme 10-sync.rules, afin qu'elle soit traîtée en priorité. A l'intérieur se trouve...

#règle de script USB

DRIVERS=="usb", KERNEL=="sd??", ATTRS{serial}=="0265930C9FF174C6", ACTION=="add", RUN+="/etc/udev/pod.sh '/dev/%k'"

J'ai commencé par tester avec DRIVERS=="usb", puis j'ai rajouté le num de série pour que ne soit prise en compte que ma clé, ou encore ACTION, pour que le script soit exécuté seulement lorsque je BRANCHE la clé. Après le chemin du script, on peut voir '/dev/%k' qui est un paramètre qui va être envoyé à ce même script, on va en avoir besoin...

Ensuite, vient le script, que j'ai placé dans /etc/udev. Dans mon dossier personnel pour essai, ça ne marchait pas, même avec un bête log (ne faîtes pas les mêmes erreurs de débutants que moi smile ).

Dans ce script, il y a ...

#!/bin/sh

sudo mount $1 /mnt
sudo find /mnt/pod -ctime +3 -exec rm -f {} \;
sudo find /home/tristan/Podcasts/Chevaliers_du_Fiel -ctime -3 -exec cp -u {} /mnt/pod \;
sudo umount $1

rien de grandiose pour le moment. En fait, je monte ma clé usb sur la première ligne, le $1 est le paramètre dont je parlais tout à l'heure, littéralement ça ressemble à quelque chose comme /dev/sdb1 ou autres...

Ensuite, 2 lignes pour copier mes fichiers et nettoyer les vieux, c'est très simple, et ça ne va pas rester comme ça ; c'est pour l'exemple et valider le truc.

Dernière ligne, je démonte ma clé.
udev continue apparemment son bout de chemin et la remonte dans /media/tristan/bla bla bla et me réouvre ça avec nautilus. Je sais au moins quand c'est fini.

N'oubliez pas de rendre exécutable le script avec chmod +x /etc/udev/nomduscript.sh

Espérant que ça serve à certains, moi j'ai un peu galéré, les tutos étant assez généralistes et ne mettant pas en évidence les erreurs à ne pas commettre. Ça coule de source pour les habitués, moins pour les autres.
Si certains ont des questions ou des suggestions...

Tristan

Dernière modification par betasub (Le 24/05/2014, à 20:13)

Hors ligne