Aller au contenu

La commande diff


Messages recommandés

Bonjour,

En fait j'ai deux ordinateurs en réseau où je dois copier un dossier de partage de l'un à l'autre par scp.

Le poste 1 est un serveur et le poste 2 est un client. Je possède un gros dossier de partage sur le poste 1 (/media/partage) qui a été copié sur le poste 2(media/partage). Si le dossier de partage du poste 1 change (suppression de fichiers....) alors je dois copier le dossier du serveur (poste 1) alors changé à la place du même dossier sur le poste 2.

Mais pour cela, je dois comparer continuellement ces dossiers. Ce que j'ai fais en premier lieu, c'est de copier le dossier du poste 2 à la racine du poste 2 (pour ne pas écraser le dossier de partage du poste 2 (/media/partage)).

Remarque : pour le scp j'étais obligé de me trouver sur le poste 2.

Le problème se situe après. Pour comparer les 2 dossiers, je dois donc maintenant me connecter sur le poste 1. Mais le ssh me bloque. Le script ne continue pas et je ne peux donc pas comparer les 2 dossiers. Le ssh est bloquant dans un script. Pourquoi?

Merci d'avance pour vos réponses.

Cordialement

:| Pour le logiciel libre :ouioui:

Lien vers le commentaire
Partager sur d’autres sites

Le ssh est bloquant dans un script. Pourquoi?

Sûrement à cause d'une erreur à la con... normalement, il ne devrait y avoir aucun problème pour lancer un sous-shell ssh dans le shell de ton script :|

Euh, sinon, pourquoi tu ne fais pas avec rsync (quitte à l'encapsuler dans ssh), pour faire ta synchro ?

Lien vers le commentaire
Partager sur d’autres sites

Le ssh est bloquant dans un script. Pourquoi?

Sûrement à cause d'une erreur à la con... normalement, il ne devrait y avoir aucun problème pour lancer un sous-shell ssh dans le shell de ton script :|

Euh, sinon, pourquoi tu ne fais pas avec rsync (quitte à l'encapsuler dans ssh), pour faire ta synchro ?

Ben en fait je crois que tu as raison. Au départ je n'avais pas pensé à Rsync mais comme j'avais déjà commencé ben je ne l'ai pas utilisé.

Je vais l'essayer et je donne des nouvelles. En tout cas merci

Au fait comment tu fais avec Rsync car je dois d'abord faire ma comparaison de dossiers?

Lien vers le commentaire
Partager sur d’autres sites

+1 pour rsync ....

et sinon pour le ssh , si il te demande le mot de passe dans le script c'est mort ...

sauf si il y a eu échange de clefs..

Voilà mon autre problème l'échange de clés se fait par autorized keys dans .ssh mais cela ne marche pas lol

Lien vers le commentaire
Partager sur d’autres sites

et sinon pour le ssh , si il te demande le mot de passe dans le script c'est mort ...

Bah non... ça marche, même avec une authentification par mot de passe :transpi: ... à moins d'utiliser un shell non-interactif, m'enfin, delphin2 a l'air de faire à la mimine, pour l'instant...

Voilà mon autre problème l'échange de clés se fait par autorized keys dans .ssh mais cela ne marche pas lol

Et un ssh à la mimine, tout seul, juste pour entrer dans le shell distant, ça marche ? Tu fais comment ? Tu utilises une clé privée dans ~/.ssh/id_rsa, ailleurs, ou tu utilises un agent ?

Lien vers le commentaire
Partager sur d’autres sites

et sinon pour le ssh , si il te demande le mot de passe dans le script c'est mort ...

Bah non... ça marche, même avec une authentification par mot de passe :transpi: ... à moins d'utiliser un shell non-interactif, m'enfin, delphin2 a l'air de faire à la mimine, pour l'instant...

Rhoooo j'ai jamais su le faire !

Comment tu fais ? Ca m'interesse :ouioui:

Lien vers le commentaire
Partager sur d’autres sites

[Rhoooo j'ai jamais su le faire !

Comment tu fais ? Ca m'interesse :ouioui:

Bah... je fais, c'est tout :transpi:

Si je mets "ssh aefron@soumise" dans un script, et que j'exécute le script à la mimine dans un shell (genre "./test"), si le serveur autorise la connexion par mot de passe, le sous-shell lancé par le script me demande le mot de passe (sinon, il m'envoie chier avec un "public key needed", si celles du /etc/ssh ne sont pas bonnes, ou si ce n'est pas dans un agent accessible), et lance un sous-sous-shell de la machine distante...

... par contre, si le script est exécuté par un cron ou autre spwaner de shell non interactif, bah, non, là, ça se plante comme une loutre bourrée...

Sinon, on peut se servir de sshpass pour faire une connexion via mot de passe non interactivement (genre, en stockant le mot de passe en hard quelque part), mais, là, c'est de l'ordre du maestro-goretto... autant faire avec de la clé privée sans mot de passe, à ce stade...

Lien vers le commentaire
Partager sur d’autres sites

et sinon pour le ssh , si il te demande le mot de passe dans le script c'est mort ...

Bah non... ça marche, même avec une authentification par mot de passe :transpi: ... à moins d'utiliser un shell non-interactif, m'enfin, delphin2 a l'air de faire à la mimine, pour l'instant...

Voilà mon autre problème l'échange de clés se fait par autorized keys dans .ssh mais cela ne marche pas lol

Et un ssh à la mimine, tout seul, juste pour entrer dans le shell distant, ça marche ? Tu fais comment ? Tu utilises une clé privée dans ~/.ssh/id_rsa, ailleurs, ou tu utilises un agent ?

Par rsa oui ca doit marcher j'ai du me croûter quelque part je testerais plus tard car là je n'ai pas le temps je vous tiendrais au courant

Lien vers le commentaire
Partager sur d’autres sites

Tu utilises une clé privée dans ~/.ssh/id_rsa, ailleurs

ouis un truc comme ça que je faissais et qu'il faut que je reparamètre sur mon htpc...

un simple ssh nom_de_la bécane suifi pour se logger.

Très pratique pour lancer les scripts à distance pour changer le canal de la TNT :transpi:

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Merci les gars pour tous ces renseignements

Effectivement, pour l'échange de clés rsa ça marche.

Je le fais maintenant avec RSync, par contre le truc bizarre est que quand je lance RSync avec le ssh encapsulé dans un terminal, le mot de passe ne m'est pas demandé -> normal car échange de clés.

Par contre quand je l'éxécute dans un script, cela me demande le mot de passe du client sur lequel je dois me connecter.

Commande tapée :

rsync -avz -e ssh user@ipClient:dirTosave dirDest

Merci pour votre aide :ouioui:

Lien vers le commentaire
Partager sur d’autres sites

Ca dépend surtout d'où sont les clés...

Si les clés sont dans ~/.ssh, la passphrase de la clé sera demandée à chaque utilisation, s'il y en a une... si les clés sont dans un agent, la passphrase ne sera demandée qu'à l'insertion dans l'agent, s'il y en a une...

... maintenant, certes, par défaut, root n'ira pas chercher les clés dans /home/delphin2/.ssh (sauf à passer par un truc qui maintient la valeur de $HOME, comme sudo)... pas plus qu'il ne bénéficiera de l'agent d'un autre utilisateur (en tout cas, pas sans trifouiller)...

... et si le serveur ssh autorise à la fois la connexion par clé RSA et par mot de passe UNIX, bah, faute de grives...

Donc, il nous faudrait plus de renseignements sur la manière dont est stockée ta clé (agent, fichier, ...), et la manière dont tu t'y prends pour lancer le script (quel utilisateur ? )...

Lien vers le commentaire
Partager sur d’autres sites

Ca dépend surtout d'où sont les clés...

Si les clés sont dans ~/.ssh, la passphrase de la clé sera demandée à chaque utilisation, s'il y en a une... si les clés sont dans un agent, la passphrase ne sera demandée qu'à l'insertion dans l'agent, s'il y en a une...

... maintenant, certes, par défaut, root n'ira pas chercher les clés dans /home/delphin2/.ssh (sauf à passer par un truc qui maintient la valeur de $HOME, comme sudo)... pas plus qu'il ne bénéficiera de l'agent d'un autre utilisateur (en tout cas, pas sans trifouiller)...

... et si le serveur ssh autorise à la fois la connexion par clé RSA et par mot de passe UNIX, bah, faute de grives...

Donc, il nous faudrait plus de renseignements sur la manière dont est stockée ta clé (agent, fichier, ...), et la manière dont tu t'y prends pour lancer le script (quel utilisateur ? )...

En fait je lance le script en root depuis le serveur pour sauvegarder un dossier qui se situe sur un poste client.

Ce que je ne comprends pas, c'est que le serveur connait la clé du client et inversement et donc ca devrait marcher.

Cela marche par clé rsa en fait

J'ai mis en place cette solution : http://www.generation-linux.fr/index.php?2...de-mot-de-passe

Et ca ne marche pas quand je lance le script, un mot de passe est demandé

Lien vers le commentaire
Partager sur d’autres sites

J'ai mis en place cette solution : http://www.generation-linux.fr/index.php?2...de-mot-de-passe

Et ca ne marche pas quand je lance le script, un mot de passe est demandé

OK. Et donc, le mot de passe qu'il te demande, c'est le mot de passe UNIX du compte sur lequel tu te connectes à distance ? Ce n'est pas une passphrase de clé ? Bon, a priori, pas besoin de passphrase à la clé, vu que c'est a priori pour faire de la synchro automatique... donc, ça doit être le serveur SSH qui finit par demander une authentification par mot de passe UNIX, puisque ne doit lui est fournie aucune authentification par clé publique/privée...

... donc, le problème doit se situer au niveau de l'emplacement de la clé privée... tu dis que tu as suivi le tuto donné en lien, mais le ssh-keygen, vu que tu utilises la clé en tant que root (pas forcément génial), tu l'as bien fait en tant que root ? La clé est-elle bien dans /root/.ssh/id_rsa ?

Sinon, il faut que tu l'y copies (probablement en changeant les droits, au passage)... voire mieux : créer un compte pour la synchro via rsync et mettre la clé rsa dans son ~/.ssh ...

Lien vers le commentaire
Partager sur d’autres sites

En fait je lance le script en root ...

Pardon je rectifie mon erreur

Je lance la commande de rsync en tant qu'utilisateur dans un terminal en sudo ca marche et donc pas de demande de mot de passe là tout va bien

Par contre , le script dans lequel il y a la meme commande rsync et que je lance en sudo me demande le mot de passe unix de la machine sue laquelle je me connecte en ssh

Lien vers le commentaire
Partager sur d’autres sites

Il y a peut-être une couille au niveau des paths, quand ça se fait par sudo...

Tu peux essayer en spécifiant l'emplacement de la clé RSA manuellement avec l'option "-i" de ssh :

sync -avz -e "ssh -i fileRSA" user@ipClient:dirTosave dirDest

eh ben chapeau après plusieurs galères tu as la réponse à ma question, ca marche parfaitement

Une histoire de guillemets fallait trouver mais surtout l'histoire du chemin de la clé rentrée manuellement

Merci beaucoup et des gars comme toi sont indispensables dans les forums :ouioui:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...