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