特定の文字列のみを含むネットワークトレースをどのようにキャプチャしますか?

特定の文字列のみを含むネットワークトレースをどのようにキャプチャしますか?

RHEL サーバーにアダプターがインストールされ、実行中で、アダプターが接続されているソースから特定のシグナルメッセージが送信されると、アダプターの接続が切断されます。

ソースIPアドレスから生のパケットをキャプチャするためにこのユーティリティを使用していますtcpdump。しかし、それを使用する際の問題は、tcpdump私が関心のないトラフィックを含むソースからのすべてのパケットを継続的にキャプチャすることです。

これにより、マイアダプタとソースサーバー間の通信に使用されるこの特定のポートのソースIPアドレスから大量のデータが受信されるため、膨大なディスク容量を利用できます。

特定の文字列を含むパケットのみをキャプチャするために使用できる方法や、基本的なLinuxユーティリティはありますか?イベント損失それでは、最終的にはこれらのメッセージを含むパケットだけをキャプチャすることになるのでしょうか?

さまざまなオプションを検索しましたが、tcpdumpこのユーティリティを使用して目的の結果を得る方法を見つけることができませんでした。

答え1

「tshark」(wiresharkの一部)を使用し、「contains / matches」表示フィルタを使用して文字列を見つけることができます。 TCP パケットであると仮定すると、フィルタは次のようになります。

tshark -Y 'tcp contains "eventLossOccurred"'

「一致」を使用すると、Perl正規表現を指定できます。

NOTE:これはパケットの詳細のみを表示し、PCAP形式の完全なパケットダンプをキャプチャするためには使用できません。必要な詳細を表示するようにtsharkオプションを変更してください。

関連情報