在调用spawn.send()时读取输出文本

时间:2013-05-02 09:42:49

标签: java expect expectj

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

是否有办法让我可以读取spawn.send(“ls”)的正常输出,例如,没有预期只会捕获提示?

1 个答案:

答案 0 :(得分:0)

您确实可以捕获输出流: 它是ExpectJ.Spawn类的方法之一 我也是Java的新手,但是我得到了输出,但是,我仍然在努力获得提示,因为我从Unix获得了额外的控制字符,所以不要相信第二个System.out.println后面的内容(sh ,期待部分) 输出工作正常,如果你愿意,只需将它设置在变量中,或者如果你使用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);           
            }
        }
    }