Java 调用spawn.send()时读取输出文本
我不熟悉ExpectJ Java编程。我下载了jar,并且能够执行一些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也很陌生
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);
}
}
}