2010-07-14 52 views
0

是否可以模擬pexpect模塊中的re.findall?Python:在Pexpect模塊中模擬re.findall

我目前有一個腳本,使用pexpect ssh到服務器。然後我有它發送命令到它返回p.before一束線(p是一Pexpect的產卵)服務器:

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

我認爲你可以通過繼承searcher_re並使用expect_loop調用一個子類的實例來替代search方法來破解你正在尋找的東西。

在您的覆蓋中,在執行您現在使用的任何主要搜索之前,您可以在緩衝區中爲識別IP的RE執行findall,並將這些結果累積到您自己的實例變量中。因此,當pexpect.expect_loop返回時,您實例上的該變量將具有您要查找的「額外信息」。

似乎需要一點點試驗和錯誤才能正確使用,而且我不明白你期望的(通過這種或任何其他類似目的的攻擊)優於你提到的簡單方法,即直接使用re.findall,而不會與pexpect的機器混淆 - 謹慎解釋......?