0

我是 ExpectJ Java 编程的新手。我下载了 jar 并且能够做一些send()expect()方法。send()将在控制台上触发命令并expect()识别任何提示,以便可以提供输入。期望只读取有提示,而不是其他信息。例如,如果要触发,spawn.send("ls")并获取所有文件名的列表等某些操作,这可能吗?

有没有办法让我可以读取 spawn.send("ls") 例如的正常输出,而不需要只捕获提示?

4

1 回答 1

0

您确实可以捕获输出流:它是 ExpectJ.Spawn 类的方法之一 我对 Java 也很陌生,但是我得到了输出,但是,由于我获得了额外的控制权,我仍然在努力让提示被识别来自 Unix 的字符,所以不要相信第二个 System.out.println (sh,expect 部分)之后的输出工作正常,如果需要,只需将其设置在变量中,或者如果使用 swing,将其发送到 textarea与听众。

顺便提一句!如果您知道如何在没有这些该死的控制字符的情况下执行期望,1m,34 [001 等,我欢迎您的输入

    import expectj.ExpectJ;
    import expectj.Spawn;

    public class myExpectinator {

        public myExpectinator(){
        }

        public void connect(){  
            try {
                ExpectJ ex = new ExpectJ(10);
                Spawn sh = ex.spawn("10.10.10.10", 22, "name", "password");

                System.out.println(sh.getCurrentStandardOutContents());
                System.out.println(sh.getCurrentStandardErrContents());
                sh.expect("~ $");
                sh.send("ps\n");
                System.out.println(sh.getCurrentStandardOutContents());
                //sh.expectClose();
                sh.stop();
            }
            catch(Exception e) {
                System.out.println(e);           
            }
        }
    }
于 2013-05-08T21:22:07.500 回答