2016-10-30 16 views
2

Я прошел через Java API, такие как SSHJ и JScH для выполнения команд на удаленной машине. Я изучил Java Expect API как ExpectIt и Expect4j. Но я не мог найти способ потокового вывода строки за строкой от машины до моего java-процесса. Скажем, я делаю grep на огромном файле на моей удаленной машине, и я хочу поточно передать огромный вывод, по очереди, в мой процесс, а не ждать завершения всей команды. Является ли это возможным ? если да, то как это сделать?Поток вывода из SSHJ или JScH

+0

Вы должны показать некоторые из того, что вы пробовали до сих пор. – tom

ответ

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