[SSH - rsync] - Meilleure option ? (Résolu)
[SSH - rsync] - Meilleure option ? (Résolu)
J'ai fait un petit script qui utilise rsync afin de synchroniser un dossier de la session de mon amie avec son pc portable. Cela fonctionne bien, mais il y a quelques inconvénients.
> Elle lance le script en cliquant dessus, elle ne voit donc pas ce qu'il se passe ou même si cela fonctionne.
> Si l'IP locale change, cela ne fonctionne plus. (C'est ce qui vient de lui arriver)
Donc, que devrais-je faire ?
> M'arranger pour afficher une notification (KDE) une fois le transfert fini sans souci ? Si oui, auriez-vous une piste ? (Je débute)
> Changer ma manière de synchroniser ? Avez-vous des propositions ?
Merci pour vos conseils!!
Re: [SSH - rsync] - Meilleure option ?
Lance le dans un terminal, non ?Origyne a écrit : > Elle lance le script en cliquant dessus, elle ne voit donc pas ce qu'il se passe ou même si cela fonctionne.
Utilise localhost au lieu de l'IP ...Origyne a écrit : > Si l'IP locale change, cela ne fonctionne plus. (C'est ce qui vient de lui arriver)
Origyne a écrit : > M'arranger pour afficher une notification (KDE) une fois le transfert fini sans souci ? Si oui, auriez-vous une piste ? (Je débute)
Code : Tout sélectionner
notify-send "Le script a fini"
Re: [SSH - rsync] - Meilleure option ?
> Moi, je peux, mais elle, c'est une autre histoire.^^Lance le dans un terminal, non ?
> J'ai plusieurs serveurs SSH, mais j'imagine que je peux utiliser le nom du PC en fait.Utilise localhost au lieu de l'IP ...
> Parfait, j'essaye !notify-send "Le script a fini"
Re: [SSH - rsync] - Meilleure option ?
Re: [SSH - rsync] - Meilleure option ?
Code : Tout sélectionner
urxvt -e
Code : Tout sélectionner
xterm -e
Code : Tout sélectionner
for FILE in "blabla"
do
echo "$FILE"
done
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [SSH - rsync] - Meilleure option ?

Techniquement et basiquement sur une notification:
Code : Tout sélectionner
file=~/un/de/tes/fichiers ; notify-send "$file a été envoyé"
(avec éventuellement le coup de la boucle mentionnée par Ypnose)
... mais bref, sans le script, difficile (impossible) d'être précis.

Re: [SSH - rsync] - Meilleure option ?
Code : Tout sélectionner
#!/bin/bash
rsync -avP -e ssh /home/user/Dossier autreuser@serveur:/home/autreuser/
result=$(rsync -avP -e ssh /home/user/Dossier autreuser@serveur:/home/autreuser/)
notify-send "${result}"
exit 0
Code : Tout sélectionner
./Exporter
sending incremental file list
Dossier/
Dossier/Essai.odt
4263 100% 0.00kB/s 0:00:00 (xfer#1, to-check=706/711)
sent 25297 bytes received 62 bytes 3901.38 bytes/sec
total size is 3382616950 speedup is 133389.21
No summary specified.
Je sais, ça fait beaucoup et il serait plus simple de passer par un terminal, mais j'aime bien fouiller, apprendre et bricoler...
Qu'en pensez-vous ?
Re: [SSH - rsync] - Meilleure option ?
Code : Tout sélectionner
#!/bin/bash
file=$HOME/transfert_erreur
rsync -avP -e ssh /home/user/Dossier autreuser@serveur:/home/autreuser/ 2> $file
if [ "$?" = "0" ]; then
notify-send "Le transfert a été effectué avec succès."
else
notify-send "Le transfert a échoué. Consulter le fichier $file"
exit 1
fi
exit 0
Re: [SSH - rsync] - Meilleure option ?
Cependant, lorsque je l'applique, j'ai toujours la présentation de l'erreur, quoique je fasse (j'ai enlevé les options verbeuses de rsync, j'ai volontairement fait des erreurs...je me retrouve même avec un fichier transfert_erreur vide, mais ma notification me demandait de le vérifier)...
En tout cas, je ne connaissais pas le principe exit 1 ou même de la redirection 2>...c'est intéressant!

Re: [SSH - rsync] - Meilleure option ?
Code : Tout sélectionner
#!/bin/bash
export LOGFILE='monlog.log'
echo 'foo' > $LOGFILE 2>&1
echo 'bar' >> $LOGFILE 2>&1
Avec le script que je te donne en exemple, le fichier de log sera écrasé à chaque exécution (la première redirection de flux utilisant un chevron simple). Tu peux jouer avec ça, tu comprendras vite le principe.
- benjarobin
- Maître du Kyudo
- Messages : 17632
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [SSH - rsync] - Meilleure option ?
Code : Tout sélectionner
ma-commande &> $LOGFILE
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [SSH - rsync] - Meilleure option ?


Juste la liste (on zappe la seconde ligne/info de transfert pour ne garder que le nom du fichier; sleep pour avoir le temps de voir les notifications successives):
Code : Tout sélectionner
rsync -avP /home/user/Dossier autreuser@serveur:/home/autreuser/ | while read line1; do read line2;notify-send "Transfert rsync" "$line1";sleep 2; done

Code : Tout sélectionner
rsync -avP /home/user/Dossier autreuser@serveur:/home/autreuser/ | while read line1; do read line2;notify-send "Transfert rsync" "$line1\n$line2";sleep 3; done

Re: [SSH - rsync] - Meilleure option ?
Une façon de faire, en ajoutant une date lisible au nom du log :
Code : Tout sélectionner
date=`date +%x`
date=`echo $date | sed -e s:/:.:g`
logfile=$date"-monlog.log"
Re: [SSH - rsync] - Meilleure option ?
Sinon, je connaissais les deux flux de redirection > et >> mais je ne savais pas qu'il en existait autant. Je dois avouer que je n'ai pas tout compris pour le moment, mais la pratique aidera !
Foolecho > C'est en effet intéressant de le faire fichier par fichier, c'est à tester, surtout que créer une boucle n'a pas l'air si compliqué!
Cependant, je me demande encore comment vérifier que tout s'est bien déroulé. D'ailleurs, comment le système le sait ? Comment puis-je savoir qu'une commande s'est bien effectuée ?
C'est étrange comme façon de penser, peut-être?
Re: [SSH - rsync] - Meilleure option ?
Tu as déjà tout dans la réponse de lekaf974.Origyne a écrit : Cependant, je me demande encore comment vérifier que tout s'est bien déroulé. D'ailleurs, comment le système le sait ? Comment puis-je savoir qu'une commande s'est bien effectuée ?
C'est étrange comme façon de penser, peut-être?
Par convention un programme renvoit la valeur entière 0 quand il n'a pas rencontré d'erreur. Tout ce qui est différent de zéro correspond à un code d'erreur, interprétable selon les conventions du programme. Finalement en bash $? correspond au code de retour de la dernière commande exécutée. Donc la réponse (simple) à ta question est dans ce qui suit :
lekaf974 a écrit :Une suggestion de ma part.Code : Tout sélectionner
#!/bin/bash file=$HOME/transfert_erreur rsync -avP -e ssh /home/user/Dossier autreuser@serveur:/home/autreuser/ 2> $file if [ "$?" = "0" ]; then notify-send "Le transfert a été effectué avec succès." else notify-send "Le transfert a échoué. Consulter le fichier $file" exit 1 fi exit 0
Re: [SSH - rsync] - Meilleure option ?
C'est très sale.vlamy a écrit :Code : Tout sélectionner
date=`date +%x` date=`echo $date | sed -e s:/:.:g` logfile=$date"-monlog.log"
Code : Tout sélectionner
date=$(date "+%d.%m.%y")
logfile=$date"-monlog.log"
Re: [SSH - rsync] - Meilleure option ?
> C'est exactement ce que je voulais savoir, merci ! :)Par convention un programme renvoit la valeur entière 0 quand il n'a pas rencontré d'erreur. Tout ce qui est différent de zéro correspond à un code d'erreur, interprétable selon les conventions du programme. Finalement en bash $? correspond au code de retour de la dernière commande exécutée. Donc la réponse (simple) à ta question est dans ce qui suit :
Re: [SSH - rsync] - Meilleure option ?
Code : Tout sélectionner
#!/bin/bash
file=$HOME/Scripts/.erreur
rsync -avP -e ssh /home/Dossier/ user@192.168.0.10:/home/user/ 2> $file
if [ "$?" = "O" ]; then
notify-send --icon=/home/user/Scripts/.transfert_ok.png "J'ai bien transféré les fichiers..."
else
notify-send --icon=/home/user/Scripts/.transfert_ko.png "Euh...J'ai eu un p'tit problème..."
exit 1
fi
exit 0
Et voilà ce que ça me donne lancé dans un terminal :
Code : Tout sélectionner
sending incremental file list
Dossier/
Dossier/test1.odt
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=702/711)
Dossier/test2.jpg
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=701/711)
Dossier/test3.iso
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=700/711)
Dossier/Essai/
Dossier/Essai2/
sent 21031 bytes received 107 bytes 3252.00 bytes/sec
total size is 3382612657 speedup is 160025.20
Pourtant, la notification qui apparaît est celle de l'erreur et non celle de la réussite, alors que les fichiers ont bien été transférés, où est-ce que je fais une erreur ?
Re: [SSH - rsync] - Meilleure option ?
C'est une erreur dans la condition du if, je te propose la correction suivante :Origyne a écrit : Pourtant, la notification qui apparaît est celle de l'erreur et non celle de la réussite, alors que les fichiers ont bien été transférés, où est-ce que je fais une erreur ?
Code : Tout sélectionner
#!/bin/bash
echo "toto"
if [ $? = 0 ]; then
notify-send "OK !"
else
notify-send "NOK"
exit 1
fi
exit 0

Mis à jour.Ypnose a écrit :C'est très sale.vlamy a écrit :Code : Tout sélectionner
date=`date +%x` date=`echo $date | sed -e s:/:.:g` logfile=$date"-monlog.log"
Code : Tout sélectionner
date=$(date "+%d.%m.%y") logfile=$date"-monlog.log"
Merci !
-
- Maître du Kyudo
- Messages : 1855
- Inscription : mer. 06 janv. 2010, 13:51
- Localisation : Ried - Alsace - France
Re: [SSH - rsync] - Meilleure option ?
Code : Tout sélectionner
if [ "$?" = "0" ]; then
Code : Tout sélectionner
if [ "$?" = "O" ]; then
Arrêtez de vous prendre la tête avec les partitions... passez au LVM