一个简单的Python包,用于查询JSON数据。
项目描述
pyjq
一个简单的Python包,用于查询JSON数据。
功能
- 支持纯JSON文件
- 支持文件中的多个JSON对象,由换行符(/n)分隔
- 支持gzip文件
- 支持可自定义的过滤器
- 支持纯日期时间范围过滤器
待办事项
过滤器可以很容易地扩展,采用Python3 stdlib运算符。请参阅pyjq.PyJQ.filter
以扩展操作映射。
安装
pip install pyjq-ng
示例数据
请参阅example/alerts.json
。pyjq按行操作(由\n分割)。它已用于Wazuh警报JSON文件和Django转储。
pyjq -j examples/django_dump.json -limit 2 -filter 'fields__original_url == https://google.com'
pyjq -j examples/django_dump.json -limit 2 -filter 'model == urlshortener.urlshortener'
用法
'agent__name'是pyjq用于访问嵌套子元素的命名空间的示例。换句话说,它意味着json['agent']['name']
。它对嵌套元素的数目没有限制。
在Wazuh警报文件上应用一些自定义过滤器,使用AND和OR运算符
pyjq -j ../Scaricati/alerts.json -filter 'agent__ip == 172.16.16.102 and agent__name == telegram-gw or agent__ip == 172.16.16.108'
包含运算符
pyjq -j ../Scaricati/alerts.json -filter 'rule__description in iptables and agent__name == dev-bastion'
将指定字段转换为纯日期时间对象并在指定范围内进行过滤
pyjq -j ../Scaricati/alerts.json -start_datetime 2020-04-06T10:22:00 -end_datetime 2020-04-06T13:22:00 -datetime_field timestamp
实时读取,它将仅获取最后的条目,由换行符\n分隔
pyjq -j /var/ossec/logs/alerts/alerts.json -datetime_field timestamp -realtime
直接使用gzip JSON文件
pyjq -j ../Scaricati/alerts.json.gzip
限制结果为2
pyjq -j ../Scaricati/alerts.json -limit 2
对特定实体进行实时监控
pyjq -j /var/ossec/logs/alerts/alerts.json -realtime -filter 'agent__name == tinyurl and rule__level == 3'
自定义回调,对于机器人集成和其他pub/sub API很有用
python3 pyjq -j examples/alerts.json -realtime -filter 'agent__name == tinyurl and rule__description in ssh' -callback 'examples.callback.things'
从stdin读取
cat examples/alerts.json | python3 ./pyjq -filter 'rule__level > 3'
# continous processing
tail -f /tmp/alerts.json | python3 ./pyjq -filter 'location != osquery'
作者
Giuseppe De Marco giuseppe.demarco@unical.it
鸣谢
Wazuh SIEM小组 @GarrLab
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
pyjq-ng-0.8.0.tar.gz (5.2 kB 查看哈希值)
构建分发
pyjq_ng-0.8.0-py3-none-any.whl (6.5 kB 查看哈希值)