0

是否可以在 pexpect 模块中模拟 re.findall ?

我目前有一个使用 pexpect 将 ssh 连接到服务器的脚本。然后我让它向服务器发送一个命令,该命令在 p.before 中返回一堆行(p 是一个 pexpect spawn):

JUNK JUNK JUNK IP ADDRESS 10.0.0.1 JUNK JUNK
JUNK IP ADDRESS 10.0.0.3 JUNK JUNK JUNK
JUNK JUNK JUNK
IP ADDRESS 10.0.0.2 JUNK JUNK JUNK JUNK

注意:我在示例中使用的 ip 地址是我仅用于此示例的随机 IP 地址。在实际脚本中,它可以是任何 ip 地址。我试图找到的信息是 IP 地址。

pexpect 可以做类似 re.findall 的事情吗?还是我必须这样做re.findall(regex, p.before)?

4

1 回答 1

0

我认为您可以通过子类化searcher_re并使用带有子类实例的调用来破解您正在寻找的东西expect_loop,这会覆盖搜索方法。

在您的覆盖中,在对您现在使用的任何内容执行主要搜索之前,您可以在缓冲区上查找 IP 识别 RE,并将这些结果累积到您自己的实例变量中。因此,当pexpect.expect_loop返回时,您实例上的该变量将具有您正在寻找的“额外信息”。

似乎需要进行一些试验和错误才能使其正确,而且我不明白与您提到的直接方法相比,您期望(通过此或任何其他类似目的的黑客攻击)有什么优势,即,只是直接使用re.findall,而不会弄乱pexpect's 的机器 - 需要解释一下......?

于 2010-07-14T23:39:21.193 回答