gpt4 book ai didi

java - 从 sshj 输入流读取时如何获得 'input prompt'?

转载 作者:行者123 更新时间:2023-11-29 21:59:51 26 4
gpt4 key购买 nike

我正在尝试使用 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() 进行读取,并检查流中是否有任何数据可供读取。

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

最佳答案

可以通过使用 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"));

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

关于java - 从 sshj 输入流读取时如何获得 'input prompt'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com