SCPClient de Ganymed SSH2

alias100 Messages postés 129 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 2 décembre 2012 - 29 mai 2007 à 22:15
ajax007 Messages postés 1 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 2 septembre 2010 - 2 sept. 2010 à 16:04
Salut,
j'ai deux machines windows PC1,PC2 connectés en reseau. PC1 possede un serveur SSH(openssh for windows), et dans PC2 j'ai develope cette classe:
Mon besoin de cette classe est d'envoyer le fichier

a.txt qui existe sous C:\\ de PC2 vers D:\\ de PC1.


import java.io.*;
import ch.ethz.ssh2.*;

public class Basic
{
    public static void main(String[] args)
    {
        String hostname = "134.123.100.3";
        String username = "alias";
        String password = "alias";

        try
        {    
            //Creer une instance de la connexion
            Connection conn = new Connection(hostname);

            conn.connect();

            boolean isAuthenticated = conn.authenticateWithPassword(username, password);

            if (isAuthenticated == false)
                throw new IOException("Authentication failed.");

            SCPClient C=new SCPClient(conn);
            C.put("C:\\a.txt", "D:\");        

            //Creer une session

            Session sess = conn.openSession();
            sess.execCommand("");
            System.out.println("Here is some information about the remote host:");
            InputStream stdout = new StreamGobbler(sess.getStdout());
            BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
            while (true)
            {
                String line = br.readLine();
                if (line == null)
                    break;
                System.out.println(line);
            }
        
            /* Show exit status, if available (otherwise "null") */

            System.out.println("ExitCode: " + sess.getExitStatus());

            sess.close();            //* Close this session

            conn.close();            //* Close the connection */
        }
        catch (IOException e)
        {
            e.printStackTrace(System.err);
            System.exit(2);
        }
    }
}

Mais il m'affiche java.io.IOException: Error during SCP transfer.
    at ch.ethz.ssh2.SCPClient.put(SCPClient.java:575)
    at ch.ethz.ssh2.SCPClient.put(SCPClient.java:533)
    at ch.ethz.ssh2.SCPClient.put(SCPClient.java:394)

Est ce que SCP ne fonctionne pas entre deux machines windows?? C'est vraiment bizzare,car j'ai la teste avec machine linux et sa marche la copie pourquoi avec windows non???

5 réponses

Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
30 mai 2007 à 09:25
Salut,

tu oublie de mettre la suite de l'exception :

java.io.IOException: Error during SCP transfer.
at ch.ethz.ssh2.SCPClient.put(SCPClient.java:575)
at ch.ethz.ssh2.SCPClient.put(SCPClient.java:533)
at ch.ethz.ssh2.SCPClient.put(SCPClient.java:394)
at Basic.main(Basic.java:41)
Caused by: java.io.IOException: Remote scp terminated with error (scp: C: /test.sh: No such file or directory).
at ch.ethz.ssh2.SCPClient.readResponse(SCPClient.java:59)
at ch.ethz.ssh2.SCPClient.sendFiles(SCPClient.java:182)
at ch.ethz.ssh2.SCPClient.put(SCPClient.java:571)
... 3 more

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
alias100 Messages postés 129 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 2 décembre 2012
30 mai 2007 à 10:54
non, j'ai changer les parametres mais le fichier a.txt existe bien sous C:\ de la machine qui a le code Basic.java et je veux le mettre dans le disque D:\ de machine qui a serveur ssh.

C'est vraiment bizarre ; Qu'est ce que je dois faire!!!
0
alias100 Messages postés 129 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 2 décembre 2012
30 mai 2007 à 19:23
Salut,
J'ai change dans le code:

 SCPClient C=new SCPClient(conn);

 C.put("C:\\a.txt", "D:");    

et comme ca la copie est réalise dans la machine PC1. Mais si je veux le mettre sous un dossier:

SCPClient C=new SCPClient(conn);

 C.put("C:\\a.txt", "D:\\dossier");

et le dossier existe sous D. La copie ne se realise pas!!!

C'est vraiment bizarre ...Est ce qu'il ya quelqun a une idee!!!
Merci
0
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
30 mai 2007 à 19:46
Salut,

désolé mais perso je n'ai pas d'idée de plus je n'utilise l'api qu'entre des machines linux et je n'ai rencontré aucun de tes problèmes donc ....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ajax007 Messages postés 1 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 2 septembre 2010
2 sept. 2010 à 16:04
[^^sad1][^^sad1]
0