Android / Jsch - SSH输出始终为空

时间:2014-04-06 20:28:10

标签: android ssh output bufferedreader jsch

我有完全相同的问题: SSH Output always empty

不幸的是,接受的答案对我不起作用,因为

bufferedReader.readLine()

以循环结束,可能是因为缺少了行尾。

另外我不明白为什么第一个帖子中的代码不起作用。 谁有更深入的见解?

事先提前

编辑:如果我这样做

while ((line = bufferedReader.readLine()) != null) {
    stringBuilder.append(line);
    stringBuilder.append('\n');
}

关闭ssh连接后,没有无限循环,但输出仍为空......

stringBuilder.append(bufferedReader.read());

导致-1作为输出。

只是:

stringBuilder.append(bufferedReader.readLine());

导致“null”。

这种疯狂是什么?我不明白......

1 个答案:

答案 0 :(得分:2)

答案:我正在阅读错误的信息流,之后不得不关闭连接。

JSch jsch = new JSch();
Session session = jsch.getSession(username, hostname, 22);
session.setPassword(password);

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

session.connect();

// SSH Channel
ChannelExec channelssh = (ChannelExec)
session.openChannel("exec");
InputStream inputStream = channelssh.getInputStream(); 

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;

/**/
// Execute command
channelssh.setCommand(command);
channelssh.connect();

while ((line = bufferedReader.readLine()) != null) {
    stringBuilder.append(line);
    stringBuilder.append('\n');
}

channelssh.disconnect();

return stringBuilder.toString();