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

Entrée/Sortie Java Discussion :

SCP avec Jsch


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Par défaut SCP avec Jsch
    Bonjour,

    je suis en train de développer un outil sous windows qui doit se connecter à un serveur unix afin d'y exécuter des scripts qui génèrent un fichier
    que je souhaite rappatrier du coté windows.

    Pour cela j'utilise l'API JSch, cependant je n'arrive pas à faire le scp avec cette api.
    Je me suis fortement inspiré des exemples qu'ils donnent sur le site de Jsch (http://www.jcraft.com/jsch/examples/), cependant sans succès

    voici mon code

    Code java : 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
     
     public static void scpDistantFile(String filename, String localname){
            try{
                JSch jsch=new JSch();
                Session session=jsch.getSession(user, host, port);
     
                UserInfo ui=new MyUserInfo(user,password);
                session.setUserInfo(ui);
                session.connect();
     
                // exec 'scp -f rfile' remotely
                String command="scp -p "+filename;
                Channel channel=session.openChannel("exec");
                ((ChannelExec)channel).setCommand(command);
     
                // get I/O streams for remote scp
                OutputStream out= new FileOutputStream(new File(localname));
                InputStream in=channel.getInputStream();
     
                channel.connect();
     
                int read=0;
                byte[] bytes = new byte[1024];
     
                while((read = in.read(bytes))!= -1){
                  out.write(bytes, 0, read);
                }
     
                in.close();
                out.flush();
                out.close();	
     
                System.out.println("New file created!");
     
                session.disconnect();
     
            }catch(Exception e){
                e.printStackTrace();
            }
        }

    Dans l'exemple ils disaient de faire le scp avec un "-f" cependant dans les pages de man je n'ai pas trouvé cette option, en tout
    cas pas en minuscule. J'ai donc testé sans rien, avec "-p" mais sans succès, le "in.read(bytes)" me retour systématiquement -1.

    De plus je trouve étrange que la commande que l'on passe n'ai qu'un seul argument, normalement un scp prend le fichier source et dest.

    Il y a peut être un moyen plus simple de faire ce que je souhaite faire.
    Si quelqu'un à une idée... merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Par défaut
    J'ai plus ou moins résolu mon problème en remplaçant la commande "scp" par la commande "cat", ainsi je récupère le résultat de la commande que je redirige dans un fichier.
    Je trouve ça un peu moche mais ça fonctionne.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 35
    Par défaut
    Bonjour ;
    J'ai le même problème que vous est ce que vous pouvez me dire comment avez vous résolu ce problème!! merci

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Par défaut
    Je le dit juste au dessus, au lieu de faire "scp" je fait "cat" le résultat du cat est passé dans l'inputstream, ducoup tu n'as plus qu'à boucler sur l'inputstream et recréer ton fichier.

    Je trouve ça assez moche mais bon sa fonctionne nickel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. rcp,scp avec des hostnames flotants
    Par wodel dans le forum Administration système
    Réponses: 0
    Dernier message: 29/09/2013, 20h27
  2. Exécuter plusieurs commandes avec JSCH en EXEC ou en SHELL sur un switch
    Par alecorps dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 03/04/2012, 17h11
  3. Connexion en SSH avec JSCH
    Par abzal dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 08/06/2010, 11h14
  4. SCP avec regexp
    Par darude94 dans le forum Modules
    Réponses: 2
    Dernier message: 22/12/2009, 19h18
  5. problème avec connection scp
    Par Rayley dans le forum Maven
    Réponses: 1
    Dernier message: 09/08/2006, 15h08

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