Envoyer des commandes au serveur via le canal shell JSch

Je n'arrive pas à comprendre comment je peux envoyer des commandes via le canal shell JSch.

je le fais, mais ça ne fonctionne pas:

JSch shell = new JSch();
String command = "cd home/s/src";  
Session session = shell.getSession(username, host, port);  
MyUserInfo ui = new MyUserInfo();  
ui.setPassword(password);  
session.setUserInfo(ui);  
session.connect();  

channel = session.openChannel("shell");  
fromServer = new BufferedReader(new InputStreamReader(channel.getInputStream()));  
toServer = channel.getOutputStream();
channel.connect();  
toServer.write((command + "rn").getBytes());
toServer.flush();

et puis j'ai lu entrée comme ceci:

StringBuilder builder = new StringBuilder();  

int count = 0;  
String line = "";  

while(line != null) {  
    line = fromServer.readLine();
    builder.append(line).append("n");

    if (line.endsWith(".") || line.endsWith(">")){
        break;
    }
}  
String result = builder.toString();  
ConsoleOut.println(result);
25
demandé sur Martin Prikryl 2010-11-16 16:09:00

9 réponses

Si elle bloque readLine() cela signifie soit que votre "tandis" ne se termine jamais (ce qui est peu probable compte tenu de votre code), soit, readLine() attend sa source, à savoir le IOstream bloque le thread cause available()!=true.

Je ne peux pas tout à fait dépanner votre code sans voir vos informations de débogage. Mais comme un conseil, avez-vous essayé