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

Java 调用spawn.send()时读取输出文本,java,expect,expectj,Java,Expect,Expectj,我不熟悉ExpectJ Java编程。我下载了jar,并且能够执行一些send()和expect()方法send()将在控制台上启动一个命令,expect()将识别任何提示,以便提供输入。只有提示,而没有其他信息。例如,如果要启动,spawn.send(“ls”)并获取所有文件名的列表和某些操作,是否可能 例如,有没有方法可以读取spawn.send(“ls”)的正常输出,而不使用expect,它只捕获提示?您确实可以捕获输出流: 它是ExpectJ.Spawn类的方法之一 我对Java也很陌生

我不熟悉ExpectJ Java编程。我下载了jar,并且能够执行一些
send()
expect()
方法
send()
将在控制台上启动一个命令,
expect()
将识别任何提示,以便提供输入。只有提示,而没有其他信息。例如,如果要启动,
spawn.send(“ls”)
并获取所有文件名的列表和某些操作,是否可能


例如,有没有方法可以读取spawn.send(“ls”)的正常输出,而不使用expect,它只捕获提示?

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

顺便说一句!如果您知道如何在没有这些该死的控制字符1m、34[001等的情况下实现expect,我欢迎您的输入

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