Précédent   Forum des professionnels en informatique > Java > Général Java > APIs
APIs Forum sur les API standard et API complémentaires. Avant de poster -> FAQ Java, Les meilleures API Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2007, 23h59   #1
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 86
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 86
Points : 28
Points : 28
Par défaut API client SSH Java

Bonjour ,
Beaucoup d'api ssh java existe, j'aurais voulu avoir vos retours sur certaines d'entre elles.
Mon objectif est de savoir par la suite si un serveur A arrive à communiquer avec le Serveur B.
Ce qui implique de lancer une commande ping sur le Serveur A, récupérer le résultat du ping.
Mais aussi pouvoir récupérer des fichiers sur les différents serveurs (SCP).
Les différentes API(free) à ma connaissance:
Java-SSH, MindTerm, JSch, JSSH, Ganymed SSH2, SSHTools, Jaramiko, etc..

Je trouve mon étude comparative, un peu hasardeuse, et je pense que vos retours me seront d'une forte utilité.
romano2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2008, 19h24   #2
Invité de passage
 
Inscription : juillet 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 15
Points : 3
Points : 3
Par défaut Comapraison Ganymed et JsCh

Bonjour
J'ai commencé le travail avec Ganymede puis trilead (c'est la même chose ).
Le problème pour cette API c'est qu'elle ne support pas la compression. C'est la raison pour laquelle j'ai basculé vers le JSCh.
La migration de trilead vers JSCH était sans problème, ce qui montre qu'il n y pas de grande différence.
Je les ai utilisés pour implémenter une console en mode interactif, exécution distante avec redirection des in/out et scp.
dans Jsch le scp est un peu tiré par les cheveux par contre pour trilead on a déjà une méthode scp.

A mon point de vu, Je trouve Jsch assez simple à utiliser que le trilead.

j'espère que je t'ai ajouté quelque chose

bonne chance
atals est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2008, 14h37   #3
Membre expérimenté
 
Avatar de rberthou
 
Inscription : septembre 2007
Messages : 609
Détails du profil
Informations personnelles :
Âge : 48

Informations forums :
Inscription : septembre 2007
Messages : 609
Points : 542
Points : 542
Je suis très intéressé par un comparatif de ces différentes Lib si tu as réalisé cela.

Merci
__________________
- Informaticien passionné
- ( java, c++, cobol, php, asp, ... )
- http://www.berthou.com/fr/
rberthou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2008, 17h45   #4
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 86
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 86
Points : 28
Points : 28
Après quelques semaines d'utilisation de trilead, rien à redire.
Facile à implémenter.
Le forum est très réactif.
Documentation correct.

Par contre que veux tu dire par "Le problème pour cette API c'est qu'elle ne support pas la compression."?
romano2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2008, 16h20   #5
Invité de passage
 
Inscription : juillet 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 15
Points : 3
Points : 3
Pour le problème de compression j'explique:
le protocole SSH permet de compression les données rechangés pour optimiser l'utilisation de la bande passante.
avec trilead (ganymed) il n'y a pas de possibilité pour utiliser cette option alors que pour JSCH c'est possible.
atals est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2008, 18h04   #6
Membre du Club
 
Inscription : février 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 72
Points : 41
Points : 41
Par défaut problème de completion en mode interactif

Bonjours,
j'utilise JSCH et je n'arriva pas bien à utiliser le mode PTY.
Quand j'appuie sur [tab] il affiche une tabulation sur la console au lieu de faire la complétion des fichiers.

Quelqu'un aurait-il rencontré le même problème?
Ou alors quelqu'un voit d'où viens le soucis?

MERCI.

Voià mon code inspiré des exemples fournis avec JSCH

Code :
1
2
3
4
5
6
7
8
 
Channel channel = session.openChannel("shell");
 
			//channel.setXForwarding(true);
			channel.setInputStream(System.in);
			channel.setOutputStream(System.out);
			((ChannelShell)channel).setAgentForwarding(true);
			((ChannelShell)channel).setPty(true);
chtiboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2008, 10h15   #7
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 91
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : décembre 2004
Messages : 91
Points : 15
Points : 15
Bonjour,

Je suis en dev aussi en ssh pour récupérer la liste des sessions connecté à une base de données.
Bon la connexion via ssh se passe bien, j'arrive à ouvrir une connexion en sqlplus sur la base de données. Là ou çà coince c pour l'exécution de la requête. J'arrive pas à balancer plusieurs commandes sur le même channel.

Voici ma class :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
 
public class TestSSH {
    public static Session oSession = null;
 
    public static void main(String[] arg) {
        String sCommandeRecupSession = "sqlplus system/manager@demoweb \n set heading on pages 32767 lin 32767 trims ON; \n select count(*) as SESSION_NBR from v$session s; \n select s.sid ||'¤'|| s.serial# ||'¤'|| s.osuser ||'¤'|| s.program ||'¤'|| s.status as SESSION_VALEUR from v$session s; \n exit; \n exit; \n";
 
        try {
            JSch jsch = new JSch();
            oSession = jsch.getSession("myuser", "localhost", 22);
            oSession.setPassword("pwd");
 
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            oSession.setConfig(config);
 
            oSession.connect();
 
            executeCommand(sCommandeRecupSession);
 
            oSession.disconnect();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
 
    public static int executeCommand(String command) {
        int exitCode = -1;
        ChannelExec channel = null;
        BufferedReader stdoutReader = null;
        BufferedReader stderrReader = null;
        try {
            channel = (ChannelExec) oSession.openChannel("exec");
 
            channel.setCommand(command + "\n");
 
            InputStream stdout = channel.getInputStream();
            InputStream stderr = channel.getErrStream();
 
            channel.connect();
 
            stdoutReader = new BufferedReader(new InputStreamReader(stdout));
            stderrReader = new BufferedReader(new InputStreamReader(stderr));
 
            while (stdoutReader.read() != -1)
                System.out.println(stdoutReader.readLine());
 
            exitCode = channel.getExitStatus();
 
            return exitCode;
        } catch (IOException e) {
            System.out.println("Cannot execute remote command: " + command
                    + " : " + e.getMessage());
        } catch (Exception e) {
            System.out.println("Cannot execute remote command: " + command
                    + " : " + e.getMessage());
        } finally {
            try {
                stdoutReader.close();
                stderrReader.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            if (channel != null) {
                channel.disconnect();
            }
        }
        return exitCode;
    }
}
Le truc c que j'arrive bien à me connecter avec la commande sqlplus, mais qu'il ne sort pas les autres commandes séparés par des \n.
Avez-vous une idée ?
D'avance merci de votre aide.

@+
imhotep_zr7s est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/11/2009, 11h54   #8
Membre du Club
 
Inscription : février 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 72
Points : 41
Points : 41
Par défaut probleme completion

J'ai essayer javassh et mindterm mais la complétion ne fonctionne pas! La touche [tab ne fait rien]
Je ne sais pas trop d'où viens le problème.

d'avance merci
chtiboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 12h01   #9
Invité régulier
 
Inscription : décembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 33
Points : 8
Points : 8
Bonjour,

Je ne sais pas si tu as résolu ton problème, je l'espère au bout de 3ans.

Sinon, il faut que tu joues ton fichier d'environnement dans ta commande(.profile ou .bash_profile) par exemple sous unix :
Code :
1
2
 
String sCommandeRecupSession = ". /app/o3p80/.profile;sqlplus system/passwd @/app/o3p80/test.sql " ;
kilou88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h07.


 
 
 
 
Partenaires

Hébergement Web