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é