Comment faire pour effectuer de multiples opérations avec JSch
Je suis nouveau sur SSH et JSch. Lorsque je me connecte à partir de mon client vers le serveur, je veux faire deux tâches:
- Télécharger un fichier (à l'aide de
ChannelSFTP
) - Effectuer les commandes, à l'instar de la création d'un répertoire, et de la recherche au travers d'une base de données MySQL
À l'instant, je suis à l'aide de deux shell connexions à effectuer chaque tâche (en fait je n'ai pas commencé la programmation les requêtes MySQL encore).
Pour le téléchargement, le code est
session.connect();
Channel channel=session.openChannel("sftp");
channel.connect();
ChannelSftp c=(ChannelSftp)channel;
c.put(source, destination);
Et pour la commande, j'ai
String command = "ls -l";//just an example
Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
Dois-je déconnecter la session après la première manche, puis à l'ouverture de la deuxième chaîne? Ou de fermer la session entièrement et ouvrir une nouvelle session? Comme je l'ai dit, je suis nouveau sur ce.
Juste une remarque (comme vous l'avez dit vous êtes nouveau à JSch): j'ai créé un documentation JavaDoc des classes, ce qui pourrait aider.
Je vous remercie. Je vais avoir un coup d'oeil...
Je vous remercie. Je vais avoir un coup d'oeil...
OriginalL'auteur | 2011-09-14
Vous devez vous connecter pour publier un commentaire.
Une session SSH peut soutenir n'importe quel nombre de canaux à la fois en parallèle et de manière séquentielle. (Il y a des limite théorique dans le canal de l'identificateur de taille, mais vous n'aurez pas frapper dans la pratique.) Ceci est également valable pour JSch. Cela permet d'économiser de refaire le coûteux clé opérations de change.
Donc, il n'y a normalement pas besoin de fermer la session et reconnectez avant l'ouverture d'un nouveau canal. La seule raison pour laquelle je pense serait lorsque vous devez vous connecter avec des identifiants différents pour les deux actions.
Pour sûr un peu de mémoire, vous pouvez fermer le canal SFTP avant l'ouverture de l'exec canal.
Je voulais dire principalement le client (c'est ce que vous contrôlez avec JSch), mais je suppose que le serveur aura également une certaine surcharge pour chaque canal à ciel ouvert, y compris le serveur SFTP processus dans ce cas.
Pense que la surcharge de plusieurs canaux sur le serveur, en particulier
exec
canaux, serait considérable ?Je n'ai aucune idée (n'hésitez pas à mesurer vous-même), mais il y a généralement aucune raison de laisser un canal ouvert après il n'est plus utilisé.
OriginalL'auteur Paŭlo Ebermann
De donner à plusieurs commandes par l'intermédiaire de Jsch
l'utilisation de shell au lieu de exec.
Coque support natif des commandes du système de connexion.
Par exemple, lorsque vous vous connectez système de windows vous ne pouvez pas donner des ordres comme
dir
à l'aide de la commande exec canal.Il est donc préférable d'utiliser le shell.
Le code suivant peut être utilisé pour envoyer plusieurs commandes par l'intermédiaire de Jsch
OriginalL'auteur krishna