#1 Le 18/04/2014, à 12:40
- Oni_Shadow
script execution automatique lors branchement clef USB
Bonjour a tous, J
e voudrais pouvoir copier le contenu de clef USB se branchant à mon ordinateur, j'ai pensé ecrire un petit script batch mais je suis un peu perdu, comment trouver le chemin des clefs branchées à l'ordinateur? Une fois ce chemin trouvé un petit cp /path/*.mp3 suffit il?
une fois le script fonctionnel et rendu exécutable, comment l’exécuter a chaque fois qu'une clef est connectée?
Enfin, une fois tout ceci fait est réalisable de créer deux fichier texte interagissant avec le script, un entrant l'uuid et le label de la clef et l'autre pemetant au script de ne pas s'exécuter sur les clefs dont l'uuid est rensigné dans le fichier?
Merci de votre aide
O_S
Rouillé
Hors ligne
#2 Le 18/04/2014, à 16:51
- jacobus77
Re : script execution automatique lors branchement clef USB
une fois le script fonctionnel et rendu exécutable, comment l’exécuter a chaque fois qu'une clef est connectée?
Il me semble que la façon la plus propre de faire est en rajoutant tes propres règles udev.
Sinon quelques pistes pour ton script shell:
Tu peux scanner /sys/block à la recherche des devices sdX et à partir de là récupérer plein d'infos dont le modèle par exemple via /device/model, ce qui te permet de savoir quel device est ton disque.
Hors ligne
#3 Le 18/04/2014, à 18:08
- Oni_Shadow
Re : script execution automatique lors branchement clef USB
merci je vais faire une recherche sur ce que sont les règles udev, je vous tiens au courant
Rouillé
Hors ligne
#4 Le 04/05/2014, à 22:06
- Oni_Shadow
Re : script execution automatique lors branchement clef USB
Bonjour,
comme je l'ai deja explicité, je voudrais me faire un petit script qui à l'insertion d'une clef usb, copie tous les fichiers commençant par : os_
on m'a dit de regarder du coté des règles udev, j'ai donc lu tout ce que je trouvais sur le sujet, mais je bloque un peu... Une fois la règle mise
BUS=="usb", KERNEL=="sd*", NAME="%k", SYMLINK+="usbhd%n", RUN+="/home/os/.oniScripts/usb.sh"
(ais-je deja fait une erreure la? )
je ne sais pas comment accéder aux variable comme le path de la clef dans le script...
une idée?
Merci d'avance,
O_S
Rouillé
Hors ligne
#5 Le 06/05/2014, à 00:10
- Postmortem
Re : script execution automatique lors branchement clef USB
Salut,
Jette un coup d'œil ici pour une façon de trouver le chemin de la clé.
Dernière modification par Postmortem (Le 06/05/2014, à 00:11)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#6 Le 06/05/2014, à 23:08
- Oni_Shadow
Re : script execution automatique lors branchement clef USB
je ne comprend pas vraiment... peux tu m'expliquer?
ces lignes me semblent bien obscure x)
Rouillé
Hors ligne
#7 Le 24/05/2014, à 09:04
- Postmortem
Re : script execution automatique lors branchement clef USB
Salut,
Petite explication concernant le lien que je t'avais donné :
La règle udev :
KERNEL=="sd[b-z]1", ACTION=="add", ATTRS{manufacturer}=="SanDisk", ATTRS{product}=="Cruzer", ATTRS{serial}=="20054256000C86E2BF3D", RUN+="/bin/bash -c '/home/toto/insert_cle.sh %k &'"
KERNEL=="sd[b-z]1" : mon disque dur interne étant sda, je lui dis que la règle ne fonctionnera que pour les disques sdb, sdc, sdd etc... Le 1 car en général, sur une clé usb, on a qu'une partition. Et c'est bien lorsque le système détecte la partition (et non le disque) que je veux que la règle s'exécute.
ACTION=="add" : je veux que le script tourne seulement lorsque la partition est "ajoutée" ; pas quand je retire la clé par exemple.
ATTRS{manufacturer}=="SanDisk", ATTRS{product}=="Cruzer", ATTRS{serial}=="20054256000C86E2BF3D" : c'est pour identifier la clé ; j'aurais pu mettre seulement ATTRS{serial}=="20054256000C86E2BF3D" mais les autres infos me permettent d'identifier pour quelle clé est cette règle.
RUN+="/bin/bash -c '/home/toto/insert_cle.sh %k &'" : le script à appeler lorsque la clé est détectée ; %k sera remplacé par exemple par sdb1, sdc1 ou sdf1 ; ça me sert dans le script pour pouvoir détecter où sera montée la partition qui m'intéresse ; j'exécute en faisant /bin/bash -c 'mon_script &' car c'est le seul moyen que j'ai trouvé pour ne pas bloquer udev ; si j'appelle simplement le script, udev ne lit plus aucune autre règle le temps de l'exécution de mon script et chez moi, par exemple, ça empêchait le montage de la partition en automatique.
Sinon, voilà quelques commentaires pour le script appelé par la règle udev :
#!/bin/bash
# Fichier log écrasé à chaque exécution
exec > /tmp/insert_cle.log 2>&1
# $1 vaudra sdb1, sdc1 ou sdd1 etc... c'est la valeur de %k dans la règle udev
chemin_periph=/dev/$1
nb=1
# Petit message inséré dans le log
echo "$(date) : clé insérée !"
# On boucle jusqu'à temps que la variable $point_montage contienne une valeur non nulle ou jusqu'à ce qu'on ait fait 10 tours dans la boucle
until [[ $point_montage || $((nb++)) -gt 10 ]]
do
# Récupération du point de montage et affectation à la variable $point_montage
point_montage=$(mount | awk -v chemin_periph="$chemin_periph" '$1 == chemin_periph {print $3}')
# On attend une seconde avant le prochain tour
sleep 1
done
# Si la variable $point_montage est nulle, on affiche un message d'erreur dans le log et on quitte
[[ $point_montage ]] || { echo "Clé non montée"; exit 1; }
# Si le point de montage est détecté, on poursuit le script
echo "Clé montée sur $point_montage"
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#8 Le 24/05/2014, à 13:35
- Oni_Shadow
Re : script execution automatique lors branchement clef USB
Merci pour ces infos,
en gros je ne comprenais pas vraiment ATTRS{manufacturer}=="SanDisk", ATTRS{product}=="Cruzer", ATTRS{serial}=="20054256000C86E2BF3D"
mais enfait, c'etait des regles qui t’étaient propres. Si jeu veux pouvoir copier des fichier peu importe la clef il suffit de les supprimer ces regles?
je teste tout ça!
Rouillé
Hors ligne
#9 Le 24/05/2014, à 19:35
- Postmortem
Re : script execution automatique lors branchement clef USB
Il faut que la règle reconnaisse les clés USB sinon, ça risque de se lancer lors de la détection de tes disques durs internes.
J'essaierai de te trouver la bonne règle quand je me mettrai que mon ordi plus tard, là suis avec mon tel.
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#10 Le 25/05/2014, à 13:56
- Oni_Shadow
Re : script execution automatique lors branchement clef USB
Merci, c'est super gentil
Rouillé
Hors ligne