IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

API client SSH Java


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Points : 60
    Points
    60
    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é.
    Activ-developpement.net - Entreprise de creation site

  2. #2
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Points : 6
    Points
    6
    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

  3. #3
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    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/

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Points : 60
    Points
    60
    Par défaut
    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."?
    Activ-developpement.net - Entreprise de creation site

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    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.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 73
    Points : 66
    Points
    66
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    @+

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 73
    Points : 66
    Points
    66
    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

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String sCommandeRecupSession = ". /app/o3p80/.profile;sqlplus system/passwd @/app/o3p80/test.sql " ;

Discussions similaires

  1. [Avis] Quelles sont les meilleures API et outils Java ?
    Par Mickael Baron dans le forum API standards et tierces
    Réponses: 33
    Dernier message: 08/06/2011, 14h39
  2. [SSH] implementer un client SSH en Java
    Par interhossa007 dans le forum Sécurité
    Réponses: 1
    Dernier message: 24/09/2008, 09h34
  3. [Windows]Api win32 pour java
    Par cpanette dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 27/06/2005, 15h06
  4. [Logging]API Logging de Java
    Par trainscoding dans le forum Logging
    Réponses: 6
    Dernier message: 17/01/2005, 15h21
  5. Client SSH gratuit
    Par Manu0086 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 11/10/2004, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo