是否可以在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地址。
pexpect可以像re.findall那样做吗?或者我必须做re.findall(regex, p.before
)?
答案 0 :(得分:0)
我认为你可以通过继承searcher_re并使用expect_loop
调用你的子类实例来修改你正在寻找的东西,这会覆盖search方法。
在你的覆盖中,在对你现在使用的任何东西进行主搜索之前,你可以在缓冲区上找到一个用于识别IP的findall,并将这些结果累积到你自己的实例变量中。因此,当pexpect.expect_loop
返回时,您实例上的该变量将具有您正在寻找的“额外信息”。
似乎需要一些试验和错误才能做到正确,而且我不明白你所期望的(通过这个或任何其他类似目的的黑客)对你提到的直接方法有什么好处,即,直接使用re.findall
,而不是弄乱pexpect
的机器 - 小心解释......?