#1 Le 12/03/2009, à 16:48
- killersky4
[resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
salut ,
je cherche faire un script shell qui a pour but de copier le contenu de tout les nouveaux peripherique USB qui seront branché . Je pensais donc au depart modifié le script de montage auto mais je viens de voir que le ect/fstab n'etait qu'un fichier config ... avez vous des idée ?
edit : en fait je pense qu'en testant l'existence d'une nouvelle partition ca devrait fonctionner le probleme est que les périphériques usb ont leur propre nom donc si je fait quelque chose de ce genre :
if [ -d "/media/usb" ]; then
ben ca ne marchera pas
Merci d'avance
bonus: Voila l'explication totale du but du script : Il devrait servir lors d'un mariage pour que les gens puisse en partant laisser les photos qu'ils ont pris(l'avantage du script est que meme si les gens sont bourré en partant il feront pas de connerie avec mon pc et ils arriveront a laisser leurs photos
Dernière modification par killersky4 (Le 20/03/2009, à 15:21)
"Celui qui est prêt à sacrifier un peu de liberté pour obtenir un peu de sécurité ne mérite ni l'une ni l'autre." Benjamin Franklin
Hors ligne
#2 Le 13/03/2009, à 07:15
- soupaloignon
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
bonus: Voila l'explication totale du but du script : Il devrait servir lors d'un mariage pour que les gens puisse en partant laisser les photos qu'ils ont pris(l'avantage du script est que meme si les gens sont bourré en partant il feront pas de connerie avec mon pc et ils arriveront a laisser leurs photos
Excellent
Par contre il faudra aussi qu'ils pensent à amener avec eux le cable de leur APN, parce que si ils ne l'ont pas (cas hautement probable) et qu'ils sont dans l'état dont tu parles, je te parle pas de la crise de rire lorsqu'il faudra qu'ils enlèvent la mini carte. Opération à haut risque vu la taille de celle-ci et leurs état supposé.
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#3 Le 14/03/2009, à 00:39
- strider
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
c'est expliqué dans le dernier MISC (sur la sécurité des clés USB)
un résumé vite fait
cd /etc/udev/rules.d
echo "
SUBSYSTEM=="block", ACTION=="mount", RUN+="/home/user/monscript.sh %p
" > 000-usbdumper.rules
chown root:root 000-usbdumper.rules
chmod 644 000-usbdumper.rules
gedit /home/user/monscript.sh
POINT_MONTAGE=$(grep $(echo $1 | awk -F/ '{print $4}') /etc/mtab | awk '{print $2')
cp -a $POINT_MONTAGE /home/user/photos_marriage/ &
exit 0
chmod +x /home/user/monscript.sh
/etc/init.d/udev restart
note : le & a la fin du cp c'est pour rendre la main a udev, et rendre la tache très discrète, dans ton cas tu ne veux peut être pas ca , et il vaut mieux laisser le script tourner pour afficher un message avec zenity a la fin de la copie.
Dernière modification par strider (Le 14/03/2009, à 00:44)
#4 Le 17/03/2009, à 20:56
- killersky4
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
arf je suis decu ta solution a l'air geniale propre et efficace (c'est bcp plus que ce que j'esperai comme reponse !)
mais j'arrive pas a la faire marcher
je bien créé le fichier je lui ai donner droit j'ai changé les user pas mon nom de user ect...
mais il m'affiche
awk: cmd. ligne:1: {print $2
awk: cmd. ligne:1: ^ nouvelle ligne inattendue ou fin de la chaîne
mon petit niveau me permet pas de trouvé le probleme
alors j'ai continué sur une autre voix (voila mon code c'est plus explicite) :
toto=$6
set -- $(ls /media/ | head -6)
a=$1
b=$2
c=$3
d=$4
e=$5
f=$6
echo : $*
if [ -d "/media/$6/" ]; then
echo "la clé est monté"
else
echo "non monté"
fi
le terminal m'affiche le nom des 5 si la clé n'est pas monté sinon des 6 elle est monté mais par contre la condition merdoit et je ne sais pas pourquoi il m'indique toujours quelle est monté (je pense que ca viens de ma variable dans le chemin)
"Celui qui est prêt à sacrifier un peu de liberté pour obtenir un peu de sécurité ne mérite ni l'une ni l'autre." Benjamin Franklin
Hors ligne
#5 Le 18/03/2009, à 01:03
- Khyl
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
il manquait une accolade à la fin après le print $2 pour refermer la commande awk
POINT_MONTAGE=$(grep $(echo $1 | awk -F/ '{print $4}') /etc/mtab | awk '{print $2}')
Hors ligne
#6 Le 18/03/2009, à 18:25
- killersky4
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Arf ouais je sais pas comment j'ai fait pour raté ca
merci a toi Khyl ! maintenant je n'ai plus de message d'erreur !
le terminal s'ouvre et le curseur s'ouvre mais par contre il ne fait rien
quelqu'un a une idée pour reglez le problème du script que j'ai écris :S
excusez-moi d'insister mais le mariage est samedi ...
Merci d'avance
"Celui qui est prêt à sacrifier un peu de liberté pour obtenir un peu de sécurité ne mérite ni l'une ni l'autre." Benjamin Franklin
Hors ligne
#7 Le 18/03/2009, à 18:33
- lagentesmith
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Bonjour,
si tu ne veux pas utiliser le script tout fait, tu peux aussi utiliser le fichier /etc/mtab
qui contrairement à /etc/fstab est dynamique et n'affiche que ce qui est monté à l'instant t.
@+
sudo apt-get remove WindowsXP
Hors ligne
#8 Le 18/03/2009, à 18:57
- killersky4
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
je serais ravis d'utiliser le script tout fait qui plus clean que celui que j'essaye de faire mais comme je l'ai dit plus haut quand je le lance : le terminal s'ouvre et le curseur s'ouvre mais par contre il ne fait rien ...
je vais allez matter /etc/mtab pour voir comment je pourrai m'en servir
merci du conseil
"Celui qui est prêt à sacrifier un peu de liberté pour obtenir un peu de sécurité ne mérite ni l'une ni l'autre." Benjamin Franklin
Hors ligne
#9 Le 19/03/2009, à 00:55
- sebk
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Je me suis penché un peu sur la question et j'en ai conclus le script suivant :
#!/bin/bash
function get_mount_point()
{
while [ "$POINT_MONTAGE" == "" ]
do
POINT_MONTAGE=$(grep $(echo "$1" | awk -F/ '{print $13}') /etc/mtab | awk '{print $2}')
done
echo $POINT_MONTAGE > /home/xxx/Bureau/usb
}
get_mount_point "$1" &
Je ne suis pas sûr que le $13 soit la meilleur solution mais c'est en tout cas le seul point commun que j'ai trouvé entre le %p et le mtab.
Autre subtilité, c'est que le mtab ne se met à jour qu'après l'éxécution des règles et tant que le processus maître de la règle n'est pas terminée le processus de montage est en attente...
En espérant que ça aides
Iceberg Project : www.iceberg-linux.net
Hors ligne
#10 Le 19/03/2009, à 01:22
- sebk
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Je ne dois pas être famillier avec les sous processus car j'ai des processus récurents qui se lancent jusqu'à ce que je fasse un pkill (qui n'est pas très acceptable dans un script).
Je me pencherais sur la solution demain soir, à moins que quelqu'un ait une idée avant.
Bonne soirée
Iceberg Project : www.iceberg-linux.net
Hors ligne
#11 Le 19/03/2009, à 12:11
- killersky4
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Merci beaucoup de prendre le temps de m'aider
je vais regarder ton script
"Celui qui est prêt à sacrifier un peu de liberté pour obtenir un peu de sécurité ne mérite ni l'une ni l'autre." Benjamin Franklin
Hors ligne
#12 Le 19/03/2009, à 20:17
- sebk
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Merci beaucoup de prendre le temps de m'aider
Je dois avouer que c'est un peu interressé : je compte bien réutiliser ça à mon compte
Sinon le script suivant ne pose pas le problème des sous processus récurents :
#!/bin/bash
function get_mount_point()
{
sleep 1
POINT_MONTAGE=$(grep $(echo "$1" | awk -F/ '{print $13}') /etc/mtab | awk '{print $2}')
echo $POINT_MONTAGE > /home/xxx/Bureau/usb
}
get_mount_point "$1" &
Cela devais provenir du while mais je ne comprend pas pourquoi.
Inconveignant de ce script : il faut attendre une seconde avant le démarrage du traitement.
Dernière modification par sebk (Le 19/03/2009, à 20:18)
Iceberg Project : www.iceberg-linux.net
Hors ligne
#13 Le 19/03/2009, à 22:28
- killersky4
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
je me sent con parce que je suis incampable de faire marché des script qui normalement marche >.<
je fait executer dans un terminal : mais rien ne se passe (enfin le terminal s'ouvre et se ferme tout de suite :S)
bon je continue a me creuser la tete merci a toi en tout cas
"Celui qui est prêt à sacrifier un peu de liberté pour obtenir un peu de sécurité ne mérite ni l'une ni l'autre." Benjamin Franklin
Hors ligne
#14 Le 19/03/2009, à 22:58
- sebk
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
je me sent con parce que je suis incampable de faire marché des script qui normalement marche >.<
je fait executer dans un terminal : mais rien ne se passe (enfin le terminal s'ouvre et se ferme tout de suite :S)
bon je continue a me creuser la tete
merci a toi en tout cas
C'est normal : ce n'est pas toi qui es sencé lancer le script mais la règle de udev.
Comme te l'as dit strider, il faut que tu crée un fichier qui contiend le parmétrage de l'action à lancer quand tu insère la clé usb.
fait un :
sudo gedit /etc/udev/rules.d/000_ma_regle_perso
Puis tu saisis :
SUBSYSTEM=="block", ACTION=="add", RUN+="/home/xxx/script.sh %p"
Tu enregistre et tu redémarre udev :
sudo /etc/init.d/udev restart
Après cela, quand tu insèrera un périphérique, le script /home/xxx/script.sh sera lancé automatiquement.
Il y a une doc complète pour créer les règles sur http://reactivated.net/writing_udev_rules.html pour ceux qui veullent aller plus loin.
Iceberg Project : www.iceberg-linux.net
Hors ligne
#15 Le 19/03/2009, à 23:45
- sebk
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Je viens de corriger un autre problème :
#!/bin/bash
function get_mount_point()
{
test=$(echo "$1" | awk -F/ '{print $13}')
if [ "$test" != "" ]
then
sleep 1
POINT_MONTAGE=$(grep $(echo "$1" | awk -F/ '{print $13}') /etc/mtab | awk '{print $2}')
echo $POINT_MONTAGE >> /home/seb/Bureau/usb
fi
}
get_mount_point "$1" &
En effet, parfois le script est appelé deux fois : une fois pour "sdb" et une fois pour "sdb/sdb1"... ce petit test en plus permet d'éviter un plantage (ou un cp maleureux dans ton cas...)
Iceberg Project : www.iceberg-linux.net
Hors ligne
#16 Le 20/03/2009, à 15:20
- killersky4
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Merci
désolé j'ai pas pu te repondre hier mais merci d'avoir pris le temps de bien m'expliquer
"Celui qui est prêt à sacrifier un peu de liberté pour obtenir un peu de sécurité ne mérite ni l'une ni l'autre." Benjamin Franklin
Hors ligne
#17 Le 20/05/2009, à 00:10
- sebk
Re : [resolu]Script Shell-Copie du contenu de tout nouveaux peripheriqueUSB
Bonjour,
Pour ceux qui veullent voir une mise en application des infos de ce post en python, j'ai mis en ligne ce soir une nouvelle version de synchrorep, téléchargeable ici : http://www.iceberg.0rg.fr/synchrorep/telecharger.php.
Pour l'instant, les sources ne sont disponible que pour ceux qui ont svn (svn://svn.iceberg.0rg.fr/synchrorep) ou en vrac sur sourceforge : http://sourceforge.net/project/download … a=75413640.
Iceberg Project : www.iceberg-linux.net
Hors ligne