0

ファイアウォールから接続テーブルをプルしたい。場合によっては、20 万行を超えることもあります。

「TCP 外部 46.33.77.20:53415 内部 10.16.25.63:80、アイドル 0:00:04、バイト 3230、フラグ UIOB」

など。

これらのテーブルを取得するために、pexpect と telnetlib の両方を実装しようとしました。残念ながら、40k を超えると、タイムアウトおよび/または停止の両方が発生します。

pexpect の実装:

connect.send("sho conn\n")
connect.expect("<--- More --->", timeout=360)
tmp_txt = connect.before

telnetlib の実装:

telnet.write("sho conn\n")
tmp_text = telnet.read_until("<--- More --->")

この情報を取得するためのより堅牢な方法はありますか? ページャーの値を使用して、一度に指定される行数を制御します (これを実行する前に)。また、ファイアウォールのCPUを監視しているので、接続が表示されていることがわかります。数が多すぎるか、pexpect または telnetlib が追いつくには速すぎます。

ありがとう。

4

1 に答える 1

0

あなたのアプローチは私には問題ないようです。また、(ファイアウォールの CPU を低く保つために) 出力をページングしてから、出力を一度に画面いっぱいにキャプチャします。

タイムアウトエラーが発生している場合は、出力の各行または特定の行を期待するループになるように期待を変更して(通常の形式であると思います)、「より多くの」行を取得したときにのみスペースを送信してください。次の画面。さまざまな場所で一時停止する可能性のある出力の長いストリームを処理するために、このパターンをよく使用しました。

Python プロセスが終了したとのことですが、発生している例外について詳しく説明しない限り、私たちはあなたを助けることはできません。

于 2012-09-20T13:18:47.040 に答える