2013-07-04 2 views
0

Bon, j'ai donc un script shell pour transférer certains fichiers vers un hôte distant en utilisant rsync sur ssh.Réduire les connexions SSH

Toutefois, en plus du transfert que je dois faire à l'avance et ensuite une maison tenue, ce qui implique une ssh supplémentaire avec la commande, et un appel à scp pour transférer des données supplémentaires non inclus dans le transfert rsync (je produis ces données pendant le transfert).

Comme vous pouvez l'imaginer, cela se traduit actuellement par beaucoup de ssh sessions de démarrage et d'arrêt, d'autant plus que les opérations d'entretien ménager sont réellement très rapides (habituellement). J'ai vérifié sur l'hôte que cela se présente comme beaucoup de SSH se connecte et se déconnecte ce qui, bien que mineur comparé au transfert réel, semble assez inutile.

Donc ce que je me demande est; est-il un moyen que je peux simplement ouvrir une connexion ssh et puis le laisser connecté jusqu'à ce que j'en ai fini avec elle? i.e - mon opération d'entretien ssh initiale laisserait sa connexion ouverte de sorte que lorsque rsync (et ensuite scp) s'exécute, il peut simplement faire sa chose en utilisant cette connexion précédemment ouverte.

Une telle chose est-elle même possible dans un script shell? Si oui, tout pointeur sur la façon de gérer les erreurs (c'est-à-dire, assurez-vous que la connexion est fermée une fois qu'elle n'est pas nécessaire) serait également apprécié!

Répondre

0

C'est possible. Le moyen le plus simple ne nécessite même pas de programmation. Voir https://unix.stackexchange.com/questions/48632/cant-share-an-ssh-connection-with-rsync - l'idée générale est d'utiliser la réutilisation de la connexion SSH pour que vos multiples SSH partagent une session, puis demandez à rsync de se joindre également.

Le plus dur est d'utiliser libssh2 et de programmer tout vous-même. Ce sera beaucoup plus de travail, et il semble que dans votre cas n'a rien à le recommander. Pour des scénarios plus complexes, c'est utile.

Questions connexes