一个非常简单的cef解析器。

pycef的Python项目详细描述


#Pycef公司 python 2/3的一个非常简单的cef解析器

我最初写这个是因为我找不到很多优秀的python cef解析器。我确实找到了[苏轼的一个](https://github.com/sooshie/cef_parser)让我开始(谢谢分享,先生!),但我选择了自己制作。

函数parse接受一个包含单个cef记录的字符串,并返回一个dict,该dict包含[cef format documentation](https://www.protect724.hpe.com/docs/DOC-1072)中定义的以下键:

  • 简化版
  • 设备供应商
  • 设备版本
  • 设备事件ClassID
  • 设备名
  • 设备严重性

如果在“extensions”部分中有任何key=value对(面对它,几乎每个cef记录都有这些),它们也将在dict中,dict密钥名与cef记录的密钥名相同。如果它不能识别任何cef数据,parse函数将返回None

##示例用法 分析格式良好的CEF记录

>>> import pycef
>>> cef = 'CEF:0|pycef|python CEF tests|1|2|Test event 1|3| field1=value1 field2=value2 field3=value3'
>>> d = pycef.parse(cef)
>>> d
{'DeviceVendor': 'pycef', 'DeviceProduct': 'python CEF tests', 'DeviceVersion': '1', 'DeviceEventClassID': '2', 'DeviceName': 'Test event 1', 'DeviceSeverity': '3', 'CEFVersion': '0', 'field1': 'value1', 'field2': 'value2', 'field3': 'value3'}

从前端带有头垃圾邮件的源解析一行cef(注意:这并不像示例中那样特定于syslog头。解析器只在找到“cef:0”的地方启动:

>>> import pycef
>>> cef_syslog = 'Nov 16 21:24:18 arcsightfwd.davidbianco.io CEF:0|pycef|python CEF tests|1|2|Test event 1|3| field1=value1 field2=value2 field3=value3'
>>> d = pycef.parse(cef_syslog)
>>> d
{'DeviceVendor': 'pycef', 'DeviceProduct': 'python CEF tests', 'DeviceVersion': '1', 'DeviceEventClassID': '2', 'DeviceName': 'Test event 1', 'DeviceSeverity': '3', 'CEFVersion': '0', 'field1': 'value1', 'field2': 'value2', 'field3': 'value3'}

##日志记录 Pycef使用标准的pythonlogging模块。默认情况下,您不会看到任何日志,但可以在自己的应用程序中轻松配置它们。下面是一个示例:

import logging

# We log with the name ‘pycef’ logger = logging.getLogger(‘pycef’)

# set log level to DEBUG to get the most verbose output logger.setLevel(logging.DEBUG)

ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s’) ch.setFormatter(formatter) logger.addHandler(ch)

# well-formatted CEF data will log the parsed values at DEBUG level cef = ‘CEF:0|pycef|python CEF tests|1|2|Test event 1|3| field1=value1 field2=value2 field3=value3’ d = pycef.parse(cef) 2018-11-23 08:49:39,827 - pycef - DEBUG - Returning values: {‘DeviceVendor’: ‘pycef’, ‘DeviceProduct’: ‘python CEF tests’, ‘DeviceVersion’: ‘1’, ‘DeviceEventClassID’: ‘2’, ‘DeviceName’: ‘Test event 1’, ‘DeviceSeverity’: ‘3’, ‘CEFVersion’: ‘0’, ‘field1’: ‘value1’, ‘field2’: ‘value2’, ‘field3’: ‘value3’}

# Parse errors in the data will log at WARNING level pycef.parse(‘kjlk’) 2018-11-23 08:47:42,853 - pycef - WARNING - Could not parse record. Is it valid CEF format?

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么大摇大摆的ui不显示带注释的REST方法?   soapweb服务概念。(来自WSDL的Java或来自Java的WSDL)   java Junit测试日志语句   java如何使Sonar与XMLInputFactory和woodstox库注册的实现兼容?   java无法启动活动组件信息{com.example.countryselect/com.example.countryselect.OfferSelect}   java在2d数组中递增对象   java在序列化和反序列化期间如何调用构造函数?   JavaFx:在按钮内设置布尔值并将其取出   java GWT如何异步发送表单?   java编译错误。木卫一。必须捕获或声明IOException错误   java无法解释的长时间停止在G1 Collector中的并发标记步骤期间世界暂停   java计算J2EE应用程序中对象的出现次数   Java使用相同的变量名和值定义字符串常量   java Samsung键盘退格不适用于SearchView   java将Spring Web应用程序部署到JBoss WebApplicationContext异常   java在加载jsp时试图调用servlet   Vertx JDBC NoSuchMethodError’java。sql。连接io。农业的。应用程序编程接口。交易交易整合。getConnection()   JAVAutil。scanner使用scanner读取Java文件