我正在尝试使用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:〜$ now的格式获得输入提示,将输入流放在此处。我能够写入shell并执行命令而没有任何问题,但我真的很担心没有得到输入提示,因为它有助于知道何时写入输出流和正确的格式。 当我执行命令时,提示被写入输入流,它看起来像这样:
"executed command"
user@host:~$ "executed command"
"result"`
我尝试使用readline()和read()进行阅读,并检查流是否有可供阅读的数据。
有没有办法让我在不执行命令的情况下从输入流接收提示?
答案 0 :(得分:2)
使用如“RudimentaryPTY”示例中所示的StreamCopier并将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"));
这个解决方案绝对不是完美的,但它确实有效。我仍然愿意就如何更好地做到这一点提出建议!