从SSHJ或JScH

时间:2016-10-30 11:02:18

标签: java expect jsch sshj

我通过了诸如SSHJJScH之类的Java API来通过远程计算机执行命令。我探讨了Java Expect API,如ExpectItExpect4j。但我找不到从机器到我的java进程逐行传输输出的方法。假设我正在远程机器上的一个巨大文件上执行grep,我想逐行将大量输出流式传输到我的进程,而不是等待整个命令完成。可能吗 ?如果是的话,该怎么做?

1 个答案:

答案 0 :(得分:0)

我希望我们可以在将输出流设置为文件后执行此操作。 在下面的代码中,我的输出流被定向到系统中的“outs.txt”文件。在填充时,您可以创建一个新的线程开始处理文件的内容。下面的代码片段显示了如何设置输出流可以设置。 在此代码段之后,您必须启动一个线程以处理“outs.txt”文件的输出。快乐的编码!!!

                    ss=new StringBuilder("grep aa.txt");
                    ss.append("\n");
                    FileWriter fw = new FileWriter("comm.txt");
                    BufferedWriter bw = new BufferedWriter(fw);
                    bw.write(ss.toString());
                    bw.flush();
                    fw.close();
                    bw.close();
                    InputStream is=new FileInputStream("comm.txt");
                    OutputStream os=new FileOutputStream("outs.txt");   
                    channel.setInputStream(is);
                    channel.setOutputStream(os);
                    Thread.sleep(1000);
                    channel.connect();