python - Python:来自 splunk 的 .json 数据
问题描述
以下问题:对于我的大学项目,我将一个 json 文件上传到 splunk,现在我想在 python 中使用它作为数据框对象。
代码:
import urllib3
import requests
import json
import pandas as pd
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
server = 'localhost'
port = 8089
username = 'testuid'
password = 'testpw'
url='https://'+ server +':' + str(port)
param = {'shortname', 'permissionId'}
search='?search=search source%3D%22events.json%22%20host%3D%22DESKTOP-9QDQ0FT%22%20index%3D%22projektseminar%22%20sourcetype%3D%22_json%22%20%7Chead%2020%20%7Ctable%20shortname%20permissionId'
output_type = '&output_mode=json'
search_url = url + '/servicesNS/nobody/search/search/jobs/export' + search + output_type
r = requests.get(search_url, auth=(username, password), verify=False)
到目前为止,效果很好。现在我想要这个特定的“r”响应对象作为具有 2 列“shortname”和“permissionId”的数据框对象。我有几个问题。首先,我从 Rest API 获得的 json 包含“preview”、“offset”和“results”列。我想要一个包含“shortname”和“permissionId”列的数据框。问题是我不能使用json.load(r)
或r.json()
或类似的东西,总是出现“额外数据”错误。所以我是 splunk 和 python 的初学者,所以也许有更好的方法来做到这一点......我还没有尝试过的另一个想法是使用 csv 输出而不是 json。如果你们对如何解决这个问题有一些建议,那就太好了。
谢谢
解决方案
完成此操作的最佳方法是使用 Splunk API for Python
您可以在此处找到 SDK:https ://github.com/splunk/splunk-sdk-python
import sys
import os
from time import sleep
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "splunk-sdk-python-1.6.13"))
import splunklib.client as client
import splunklib.results as results
import pandas as pd
# Note my port, username, and password are specific to my instance. The default port is 8089
service = client.connect(host='localhost', port=MY_PORT,
username='MY_USER', password='MY_PASS')
search = """search index=_internal sourcetype="splunkd_access" |table *"""
job = service.jobs.create(search)
while True:
while not job.is_ready():
pass
if job['isDone'] == '1':
break
sleep(2)
reader = results.ResultsReader(job.results())
df = pd.DataFrame(reader)
print(df)
推荐阅读
- java - 如何解决在 Java oop 中找不到或加载主类?
- git - Git rebase 从 master 到 dev
- php - INNERJOIN 与 COUNT DISTINCT
- performance - 优化listview Flutter中每个item的多个http调用
- sql - 如何将网站上不同用户的图像存储到oracle表中
- c# - c# winform 控件大小问题
- docker - 在容器内部,如何在特定端口上解析主机上的 DNS
- .net - .Net 5 - 使用 System.Web - 引用程序集不应加载执行。(0x80131058)
- svg - SVG overflow="scroll" 没有滚动条
- python - 我在使用 python Bot 时遇到了一些问题,例如无法识别驱动程序