【问题标题】:Android/Jsch - SSH Output always emptyAndroid/Jsch - SSH 输出始终为空
【发布时间】:2014-04-09 07:04:44
【问题描述】:

我遇到了与此处描述的完全相同的问题: 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());

结果为“空”。

这是什么疯子?没看懂……

【问题讨论】:

    标签: android ssh output bufferedreader jsch


    【解决方案1】:

    回答:我读错了流,之后不得不关闭连接。

    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();
    

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 2020-08-08
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      相关资源
      最近更新 更多