如何在python中解释来自UDP的IPFIX消息?

2024-09-30 01:18:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用和理解IPFIX。为了做到这一点,我正在用Vermont exporter(https://github.com/tumi8/vermont)进行测试。你知道吗

由于它使用协议SCTP或UDP导出IPFIX流,所以我想使用IPFIX模块(https://pypi.org/project/ipfix/)通过python3获取套接字。我尝试将以下脚本改编为UDP:https://github.com/britram/python-ipfix/blob/master/scripts/collector_test.py

我得到了以下代码:

#!/usr/bin/env python

import socketserver
import ipfix.reader
import ipfix.ie

import argparse

ap = argparse.ArgumentParser(description="Dump IPFIX files collected over TCP")
ap.add_argument('--spec', metavar='specfile', help='iespec file to read')
args = ap.parse_args()

ipfix.ie.use_iana_default()
ipfix.ie.use_5103_default()
if args.spec:
    ipfix.ie.use_specfile(args.spec)


class CollectorDictHandler(socketserver.DatagramRequestHandler):

    def handle(self):
        reccount = 0

        print ("connection from "+str(self.client_address))
        r = ipfix.reader.from_stream(self.rfile)
        for rec in r.namedict_iterator():
            print("--- record %u in message %u from %s---" %
                  (reccount, r.msgcount, str(self.client_address)))
            reccount += 1
            for key in rec:
                 print("  %30s => %s" % (key, str(rec[key])))


ss = socketserver.UDPServer(("", 4739), CollectorDictHandler)
ss.serve_forever()

但我得到的结果是:

connection from ('127.0.0.1', 60899)
connection from ('127.0.0.1', 60899)

好像r.namedict_iterator()是一个空列表,我不知道为什么。你知道吗

如果你有任何想法,你将真的是一个很大的帮助。 谢谢您!你知道吗


Tags: fromhttpsimportselfuseargsconnectionie

热门问题