Elasticsearchにpcapファイルを入力しようとしています。だから私は最初に次のようにpcapファイルをjsonに変換します:
tshark -T ek -j "http tcp ip" -x -r file.pcap > file.json
次に、次のようにElasticsearchにロードします。
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/_bulk?pretty' --data-binary "@file.json"
しかし、これは失敗し、jsonに重複するフィールドがあるという多くのエラーが発生します。 elasticsearch6.0は重複キーを受け入れなくなったことを読みました。チェックしたところ、jsonファイルに多くの重複キーが含まれています。しかし、私はそれを読みました
tshark -T ek
はそれ自体を重複排除することになっており、オプション--no-duplicate-keysはなくなったようです(私のtsharkバージョンは2.2.6です)。
では、pcapデータをelasticsearchに取り込むにはどうすればよいですか?
私も同じ問題を抱えていました。どうやら最新の開発リリース(2.5.1)はこれを修正しています。 Windowsを使用している場合は、非常に簡単です。インストーラーを https://www.wireshark.org/download.html からダウンロードしてインストールするだけです。私のようにLinuxを使用している場合は、そこからソースコードをダウンロードし、ソースからwiresharkをビルドする必要があります。そのために、これらのソースが役立つことがわかりました: https://scottlinux.com/2013/06/07/how-to-install-the-latest-wireshark-from-source-on-debian-or -ubuntu-linux /
https://www.wireshark.org/docs/wsug_html_chunked/ChBuildInstallUnixBuild.html
データを他のJSONパーサーにフィードします(その後、JSONにダンプします)。ほとんどのパーサーには、重複するフィールドを静かに無視して、最初または最後のフィールドを保持するオプションがあります。
たとえば、コマンドラインツールjq
またはjshon
を使用できます。
$ echo '{"foo": "111", "bar": "222", "foo": "333"}' | jq .
{"foo": "333", "bar": "222"}