80GBのパケットキャプチャ(libpcap)があり、特定のNFSファイル/ファイルハンドルでのすべての操作に関連するすべてのものにフィルタリングしたいと思います。
どうすればこれを達成できますか?
(tshark表示形式で)キャプチャしたいものについて、次の事実を知っています。
nfs.name == ".o1_mf_1_1093__1366653401581181_.arc
nfs.fh.hash == 0x5c191ad8
nfs.fhandle == 3a:4f:47:4c:20:11:7b:48:7f:88:4f:16:94:90:a0:34:9a:fa:cf:71:e1:6a:95:fc:3e:3b:4e:6a:bb:9c:c6:c4:49:db:80:ca
しかし、tsharkに適切なリクエスト/返信などを提供するように指示する方法がわかりません。
私はもう試した:
tshark -r ginormous.pcap -w 1366653401581181.pcap \
-R "nfs.fh.hash == 0x5c191ad8" \
-o nfs.file_name_snooping:TRUE \
-o nfs.file_full_name_snooping:TRUE \
-o nfs.fhandle_find_both_reqrep:TRUE
完全なGUIが行うスヌーピングを実行するために、tsharkを誘導しようとしますが、役に立ちません。
Tshark -r nfs.pcap -R'nfs.fh.hash == 0x5c191ad8 'を使用すると、すべての要求を取得したり、fhで応答したりできます。より複雑なケースでは、コードを書く必要があると思います。そのための優れたツールがあります http://git.linux-nfs.org/?p=mora/nfstest.git;a=summary
進行中の作業:
tshark -r $BIGFILE -T fields -e rpc.xid -R "nfs.fh.hash == 0x5c191ad8" | \
tshark -r $BIGFILE -R "$(\
python -c 'import sys; xids = sys.stdin.readlines(); print("||".join(["rpc.xid=={0}".format(xid.strip()) for xid in xids]))'\
)"