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 20/08/2011, à 23:12

Tomdereub

Synchronisation Unison au branchement d'une clé USB

Bonjour,

Je débute sous linux, et après avoir réussit à faire marcher Unison correctement, je voudrais le lancer au branchement de ma clef usb.

J'ai donc créé une règle pour udev :

BUS=="usb", KERNEL=="sd*", ATTRS{serial}=="6A48608101515023", ACTION=="add", RUN+="/home/tom/Scripts/unisoncle.sh"

Avec dans le script unisoncle.sh :

#!/bin/sh

unison -batch test

echo "ca marche" > /home/tom/test.log

J'ai bien définie le script comme executable, et quand je le lance en double cliquant dessus il marche bien. Par contre, quand je branche ma clef, la partie echo "ca marche" > /home/tom/test.log fonctionne, mais pas la synchronisation Unison.
J'ai essayé en créant la règle dans un fichier 10-local.rules ou 60-local.rules, mais ça ne change rien...

Je me demandais si ça ne pouvait pas venir du fait que le script était lancé avant que la clé soit monté, mais dans ce test je fais une synchro entre deux dossiers de mon ordinateur, donc indépendants du montage de la clé.

Si quelqu'un a une idée, moi je bloque.

Hors ligne

#2 Le 21/08/2011, à 14:04

gl38

Re : Synchronisation Unison au branchement d'une clé USB

L'environnement n'est pas le même quand tu lances la commande à la main, ou en cliquant, et quand c'est lancé automatiquement.
Du coup unison n'est peut-être pas trouvé et encore moins le profil test. Il faudrait mettre des noms complets.
Tu peux aussi récupérer les erreurs avec à la fin de la ligne où il y a unison :
2 > /tmp/error
ou quelque chose de ce genre.
Cordialement,
Guy

Hors ligne

#3 Le 22/08/2011, à 03:35

Tomdereub

Re : Synchronisation Unison au branchement d'une clé USB

Du coup j'ai essayé de mettre le chemin complet, si j'ai bien compris comment ça marche :

/usr/bin/unison -batch test > /home/tom/error

Mais ça ne marche toujours pas, et ça me créé le fichier error, mais vide... Le profil test a été créé et est appelé par unison, donc je ne pense pas qu'il n'y ait besoin de mettre le chemin complet. Si je mets le chemin complet du fichier du profil le script ne marche plus.
Et quand je lance le script à la main, dans le fichier error il me fait le compte rendu de ce qui a été modifié...

Sans forcément rentrer dans les détails, comment se fait-il que l'environnement soit différent quand la commande est lancée automatiquement ? La commande au branchement de la clef lance le script, et il n'est pas lancé de la même façon que quand on le lance à la main ou dans un terminal ?

Merci de ta réponse,

Tom

Hors ligne

#4 Le 22/08/2011, à 06:51

gl38

Re : Synchronisation Unison au branchement d'une clé USB

Il faut mettre le 2 devant > pour avoir les erreurs.
Le programme est lancé par root quand il est lancé automatiquement, je ne vois pas comment unison peut trouver test dans ce cas.
Avec un fichier de commande, il est possible de préciser l'environnement.
Cordialement,
Guy

Dernière modification par gl38 (Le 22/08/2011, à 07:23)

Hors ligne

#5 Le 23/08/2011, à 00:35

Tomdereub

Re : Synchronisation Unison au branchement d'une clé USB

Ok, du coup il me retourne ça :

Fatal error: exception Util.Fatal("Environment variable HOME not found")

Peux-tu expliciter un peu plus comment je peux préciser l'environnement ? Ça se fait directement dans le script ?

Cordialement,
Tom

Hors ligne

#6 Le 23/08/2011, à 07:27

gl38

Re : Synchronisation Unison au branchement d'une clé USB

Il y a cette doc
Cordialement,
Guy

Hors ligne

#7 Le 23/08/2011, à 23:51

Tomdereub

Re : Synchronisation Unison au branchement d'une clé USB

Salut !

Du coup j'ai réussit en précisant l'environnement :

#!/bin/sh

HOME=/home/tom
export HOME

/usr/bin/unison -batch cle 2> /home/tom/synchrocle

Par contre je me heurte à un autre problème, le retour d'erreur me donne :

Contacting server...
Connected [//georges//home/tom/Documents -> //georges//media/CL]
Looking for changes
Error: path Brasil is not valid because the root of one of the replicas is not a directory

Je pense que c'est parce que la clef n'est pas encore montée quand unison est lancé. Un test avec des répertoires locaux marche bien. Comment faire alors pour qu'il attende que la clef soit montée avant de lancer unison ? Et pour lancer la synchronisation aussi au démontage, c'est possible de retarder le démontage tant que unison n'a pas fini de tourner ? Je n'ai pas réussit à trouver dans la doc de udev...

Merci,

Tom

Je vais y arriver, je vais y arriver, je vais y arriver...

Hors ligne

#8 Le 03/09/2011, à 22:17

Guyll

Re : Synchronisation Unison au branchement d'une clé USB

Il y a une commande "sleep" qui crée une pause en secondes.
tu peux surtout faire des tests avec les commandes de scripts de bash. Tu peux tester la présence d'un fichier et le script ne démarrera que quand il sera là.
C'est facile, il y a plein de tutos sur le net.
bon courage.

Hors ligne

#9 Le 06/09/2011, à 01:36

Tomdereub

Re : Synchronisation Unison au branchement d'une clé USB

Du coup je m'y suis repenché. J'ai réussit à faire un script utilisant la commande sleep, qui marche très bien en le lançant à la main. Il cherche la clef toutes les secondes pendant 5 secondes, et si il trouve pas il s'arrête.
Mais quand je le lance avec udev, donc au branchement de la clef, la clef attend la fin du script avant de se monter, donc le script ne la trouve toujours pas, quelque soit le temps que je le fasse tourner.

Du coup j'ai essayer de mettre ma règle dans les derniers (100-local.rules), mais ça ne change rien. Comment faire pour que la clef se monte avant de lancer le script ?

C'était une bonne idée, mais j'ai l'impression que le problème vient d'ailleurs.

Hors ligne

#10 Le 25/09/2013, à 10:01

nordinatueur

Re : Synchronisation Unison au branchement d'une clé USB

C'est un peu tard, mais essaye :

#!/bin/sh

HOME=/home/tom
export HOME

(
sleep 5
/usr/bin/unison -batch cle 2> /home/tom/synchrocle
)&

La parenthèse va s'exécuter en parallèle. Le script se termine, la clé est montée et unison se lance.


Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#11 Le 25/09/2013, à 10:19

Tomdereub

Re : Synchronisation Unison au branchement d'une clé USB

Mieux vaut tard que jamais !

Par contre ça fait un moment que j'ai lâché l'affaire, faudra que je m'y remette quand j'aurais le temps pour tester ça...

Hors ligne