【问题标题】:How can I get an 'input prompt' when reading from an sshj inputstream?从 sshj 输入流中读取时如何获得“输入提示”?
【发布时间】:2012-09-04 03:09:50
【问题描述】:

我正在尝试使用 sshj 为 android 编写一个 ssh 应用程序。我可以毫无问题地连接到服务器并从输入流中读取,得到如下内容:

Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0.29-generic x86_64)

Documentation: https://help.ubuntu.com/

Last login: date time from user`

通常我希望现在得到格式为 user@host:~$ 的输入提示,输入流就在这里结束。我能够毫无问题地写入 shell 并执行命令,但我真的很担心没有得到输入提示,因为知道何时写入输出流和正确格式化很有帮助。 当我执行命令时,提示符会写入输入流,如下所示:

"executed command"

user@host:~$ "executed command"

"result"`

我尝试使用 readline() 和 read() 进行读取,并检查流是否有任何数据可供读取。

有什么方法可以让我在不执行命令的情况下接收来自输入流的提示?

【问题讨论】:

    标签: java android sshj


    【解决方案1】:

    可以通过使用 StreamCopier(如“RudimentaryPTY”示例中所示)并将 System.out 重定向到 PrintStream 来规避此问题:

        baos = new ByteArrayOutputStream();
        ps= new PrintStream(baos);
        System.setOut(ps);
        new StreamCopier (shell.getInputStream(),System.out).bufSize(shell.getLocalMaxPacketSize()).spawn("stdout");
        textView.setText(baos.toString("UTF8"));
    

    这个解决方案绝对不是完美的,但它确实有效。我仍然愿意就如何更好地做到这一点提出建议!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-03
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      相关资源
      最近更新 更多