Comment faire pour exécuter et d'afficher le résultat d'une commande shell ssh avec JSch?

J'essaie d'utiliser la bibliothèque JSch - Java Canal Sécurisé établir une connexion ssh dans mon application Android, il fonctionne.

Maintenant, je voudrais exécuter une commande et récupérer le résultat.

J'ai essayé plusieurs méthodes qui fonctionne le mieux, c'est ça. Cependant, cette méthode ne fonctionne qu'en partie, car pour une raison que je ne peux pas expliquer, mon programme s'arrête à la fin de ma boucle while, mais je suis le résultat de la commande qui s'affiche dans mon journal.

Voici mon code :

public static String executeRemoteCommand(String username, String password, String hostname, int port) throws Exception {     
    JSch jsch = new JSch();
    Session session = jsch.getSession(username, hostname, port);
    session.setPassword(password);

    //Avoid asking for key confirmation
    Properties prop = new Properties();
    prop.put("StrictHostKeyChecking", "no");
    session.setConfig(prop);

    session.connect();

    Channel channel = session.openChannel("shell");
    channel.connect();

    DataInputStream dataIn = new DataInputStream(channel.getInputStream());  
    DataOutputStream dataOut = new DataOutputStream(channel.getOutputStream());  

    //send ls command to the server  
    dataOut.writeBytes("ls\r\n");  
    dataOut.flush();  

    //and print the response   
    String line = dataIn.readLine();
    String result = line + "\n";

    while ((line = dataIn.readLine()) != null) {
        result += line + "\n";
        Log.i("TAG", "Line: "+line);
    }

    dataIn.close();  
    dataOut.close();  
    channel.disconnect();  
    session.disconnect();

    return result;
}

Quelqu'un d'autre a une meilleure façon d'exécuter une commande shell avec JSch?

Vous en remercie d'avance !

OriginalL'auteur lopez.mikhael | 2013-05-31