Python: 来自splunk的.json数据

问题描述 投票:0回答:1

以下问题:在我的大学项目中,我上传了一个json文件到splunk,现在我想在python中使用这个文件作为数据框架对象。

代码:我的大学项目中,我把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 "响应对象作为一个数据框架对象,其中有两列 "shortname "和 "permissionId"。首先,我从Rest API得到的json是有 "preview"、"offset "和 "results "这几列的,我想要一个有 "shortname "和 "permissionId "这两列的数据框架。问题是我不能使用类似于 json.load(r)r.json() 或类似的,总是会出现 "Extra Data "错误,所以我是一个splunk和python的初学者,也许有更好的方法...... 另一个我还没试过的想法是用csv输出代替json。如果你们能给我一些解决这个问题的建议就更好了。

谢谢

python json csv splunk
1个回答
1
投票

实现这个目标的最好方法是使用Python的Splunk API。

你可以在这里找到SDK。https:/github.comsplunksplunk-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)
© www.soinside.com 2019 - 2024. All rights reserved.