私はsubprocess.Popen
tcpdumpを実行するために使用しています。これにより、コードでパッケージ情報が適切に収集される可能性があります。
その後、を使用して別のスレッドでtcpdumpを強制終了し os.kill(pid, signal.SIGKILL)
、相対パケットの統計情報を記録したいと思います。
一般に、bashでtcpdumpを実行するときに、統計情報を取得したいと思います。
- キャプチャされたパケット
- フィルタによって受信されたパケット
- カーネルによってドロップされたパケット
私は次の形式でcmdを試しました:
proc=subprocess.Popen(shlex.split(tcpdump_cmd),
stdouot=subprocess.PIPE,
stderr=subprocess.PIPE)
proc.pid
ただし、 byを強制終了した後、統計を取得できませんでしたproc.stdout/stderr.readline()
。
私も使用しようとしました:
fcntl.fcntl(fd.fileno().fcntl.F_SETFL,
(fcntl.fcntl(fd.fileno.F_GETFL) | os.O_NDELAY | os.O_NONBLOCK))
それらのどれも私が期待したように統計を出力することができません。また、試してみましshell=True
たが、shell=false
同じ結果になりました。
それを達成する方法はありますか?ありがとうございました!
PS tcpdumpに関連するトピックがいくつかあることがわかりましたが、残念ながら、私が知る限り、この問題で役立つトピックは見つかりませんでした。