Java 如何在Jython中使用ExpectJ?

Java 如何在Jython中使用ExpectJ?,java,python,jython,expectj,Java,Python,Jython,Expectj,在我们公司,我们使用Jython是出于某种原因。我需要用ExpectJ扩展它,但我不知道怎么做 我设法下载了expectj-2.0.7.jar、expectj-2.0.7-sources.jar和expectj-2.0.7-javadoc.jar文件,并使Jython和Java本身也可以访问它们 因此,我可以将其导入python脚本,JVM也可以找到JAR(通过使用一个)。但据报道,有些地方仍然不对劲 import expectj ex = expectj.ExpectJ()

在我们公司,我们使用Jython是出于某种原因。我需要用ExpectJ扩展它,但我不知道怎么做

我设法下载了expectj-2.0.7.jarexpectj-2.0.7-sources.jarexpectj-2.0.7-javadoc.jar文件,并使Jython和Java本身也可以访问它们

因此,我可以将其导入python脚本,JVM也可以找到JAR(通过使用一个)。但据报道,有些地方仍然不对劲

import expectj

ex = expectj.ExpectJ()                       # I cannot use the second form of the
                                             # constructor where I can pass a timeout
                                             # parameter

sh = ex.spawn(targetshell, 22, usr, passw)   # There is no spawn method in 
                                             # ExpectJ - but why???

这就是我被卡住的地方。为什么ExpectJ对象没有
spawn
方法?有人对此有解决方案吗?

以下解决方案用于确保生成的进程在执行下一个命令之前完成。它保证循环“发送-期望-等待在发送中发送的命令完成”,然后“再次发送-期望-等待完成”

要等待命令提示符完成生成的进程的执行,请使用
shell.expect(“”
)。如果在此之后还有其他expectJ send和expect命令,则可以确保顺序执行。如果没有
shell.expect(“”
),则执行下一步
shell.send(“exit\n”)
,而不等待已生成的进程完成,在以下情况下,在发出下一个命令之前,将scp命令置于完成状态

import expectj
expectinator = expectj.ExpectJ();
shell = expectinator.spawn(expectj.SshSpawn(host_name, 22, usr_name, ssh_pwd));
shell.send("scp -r src:usr:dest" + "\r")
shell.expect(remote_box_usr + "'s password:");
shell.send(ssh_pwd + "\r");
shell.expect("");
shell.send("exit\n");
shell.expectClose();

下面的解决方案是确保生成的进程在执行下一个命令之前完成。它保证循环“发送-期望-等待在发送中发送的命令完成”,然后“再次发送-期望-等待完成”

要等待命令提示符完成生成的进程的执行,请使用
shell.expect(“”
)。如果在此之后还有其他expectJ send和expect命令,则可以确保顺序执行。如果没有
shell.expect(“”
),则执行下一步
shell.send(“exit\n”)
,而不等待已生成的进程完成,在以下情况下,在发出下一个命令之前,将scp命令置于完成状态

import expectj
expectinator = expectj.ExpectJ();
shell = expectinator.spawn(expectj.SshSpawn(host_name, 22, usr_name, ssh_pwd));
shell.send("scp -r src:usr:dest" + "\r")
shell.expect(remote_box_usr + "'s password:");
shell.send(ssh_pwd + "\r");
shell.expect("");
shell.send("exit\n");
shell.expectClose();