[shell] ssh et rsync

Résolu/Fermé
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 - 15 févr. 2010 à 13:50
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 - 16 févr. 2010 à 08:26
Bonjour,

voila plusieurs mois que je travail sur un serveur de sauvegarde et de partage avec automatisation générale.

Je vous présente brèvement l'existant : toutes les machines sont sous Fedora 11
1 serveur Maitre
10 serveurs adjacents.

Le principe et de dupliquer des données du serveur maitre vers les serveurs adjacents.

J'ai réussi a le faire grâce à SSH et RSYNC :
ssh root@10.190.0.10
rsync -avz linux-A38@10.190.0.10::clamav ~/clamav/ --password-file=/home/linux-A38/.rsync_pass

J'ai mis ces 2 commandes dans un script : rsync_A38.sh
j'ai éditer le crontab pour éxcuter ce script à des horaires précises, le but étant de dupliquer sur différents horaires pour les 10 serveurs afin de ne pas surcharger le réseau. Le problème de ce script et qu'il s'éxécute trop bien, en fait il se connecte en root sur la machine 10.190.0.10 (grâce à des clé publique, ...) mais ne lance pas la seconde partie du script.
Je ne sais pas si c'est clair ^^'

J'aimerais que le script lance le ssh root[...] et qu'une fois sur la machine adjacentes il éxécute le rsync...

merci d'avance.

Cordialement
A voir également:

6 réponses

Bonjour,
Je pense avoir bien compris ton problème;

En faisant un 'man ssh', tu verras que la syntaxe est "ssh [options diverses] [commande]".
Ce qui signifie que la commande a exécuter sur la machine distante est à placer à la fin des paramètres de la commande ssh; et entre quotes s'il te plait (pour que celà ne compte que comme un seul argument).

Ce qui ne te donnera qu'une seule commande, sur une seule ligne :
ssh root@10.190.0.10 'rsync -avz linux-A38@10.190.0.10::clamav ~/clamav/ --password-file=/home/linux-A38/.rsync_pass'

C'est OK maintenant ?

Cordialement,
MC
1
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 50
15 févr. 2010 à 14:10
C'est parfait !!!
Merci beaucoup pour la rapiditié et la qualité de la réponse ;)

Mon problème est que j'avais essayé en mettant après ssh mais sans les quotes ... -_-'

Merci encore ;)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
15 févr. 2010 à 14:13
Salut,

Un truc me turlupine ;-\

Pourquoi emploies-tu cette syntaxe (les deux points) :

rsync -avz linux-A38@10.190.0.10::clamav ~/clamav/ 

Cela laisse supposer que tu utilises un serveur "rsync", exact ?
0
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 50
15 févr. 2010 à 14:32
en fait j'ai lu un tuto : http://prendreuncafe.com/blog/post/2007/01/18/Synchro-distante-automatique-via-un-daemon-rsync-sur-Ubuntu

le fait d'utiliser les deux points permet l'utilisation d'un dossier partagé.
J'ai suivi le tuto qui correspondait bien a ce que je désirais, après je ne sais pas s'il y a mieux (surement ^^')
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
15 févr. 2010 à 14:39
Ben si tu utilises un serveur rsync, le ssh n'est plus nécessaire de ce fait ;-\
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 50
15 févr. 2010 à 14:54
en fait le fait d'utiliser ssh évite (grace au clé publique/privée) de ne demander aucun mot de passe, avant avec rsync seulement il fallait une intervention humaine ... c'est le seul moyen que j'ai trouvé pour pouvoir effectuer la commande...
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
15 févr. 2010 à 15:58
Alors pourquoi mets-tu "--password-file=/home/linux-A38/.rsync_pass" (syntaxe propre au serveur rsync) à la fin de ta commande puisque ssh est sensé t'authentifier ?

En fait la commande "ssh" ne te sert à rien dans ton cas ;-(
0
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 50
16 févr. 2010 à 08:26
en fait la syntaxe de mon message n'était pas bon, je vais réexpliquer ^^'
Pour faire simple, j'ai 2 PC pour le moment : PC1(qui contient les données à synchro) & PC2(qui recevra les données)
PC1 : grâce a crontab il exécute un script : ssh root@10.190.0.10 '/home/linux-A38A/rsync-dsf.sh' ce script demande au PC2 d'éxécuter un second script
PC 2 exécute un script : rsync -avz linux-A38@10.190.0.10::clamav ~/clamav/ --password-file=/home/linux-A38/.rsync_pass
PC 3 : envoi les données

C'est assez complexe, mais c'est une facon pour que sa soit le PC1 qui exécute à horaires précises et non pas les PC adjacents
0