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アドレスです。

pexpect は re.findall のようなことを行うことができますか? または私はしなければなりませんre.findall(regex, p.before)?

4

1 に答える 1

0

searcher_reをサブクラス化し、検索メソッドexpect_loopをオーバーライドするサブクラスのインスタンスで呼び出しを使用することで、探しているものをハックできると思います。

オーバーライドでは、現在使用しているものの主な検索を実行する前に、IP を識別する RE のバッファーで findall を実行し、それらの結果を独自のインスタンス変数に蓄積できます。したがって、pexpect.expect_loop戻ったときに、インスタンスのその変数には、探している「追加情報」が含まれます。

それを正しく行うには少し試行錯誤が必要なようですが、あなたが言及した単純なアプローチ、つまり、単にの機械re.findallをいじることなく、直接使用する - 説明する気はありますか?pexpect

于 2010-07-14T23:39:21.193 に答える