将 splunk api curl 命令转换为 python

convert splunk api curl command to python

我可以 运行 一个 splunk api 调用 bash 并取回一个 SID,然后我用它来取回一个 splunk 查询。它的第一部分如下。但是,我在使用 requests 将其更改为 python 请求时遇到问题。我一直收到 ssl CERTIFICATE_VERIFY_FAILED 错误。

Bash 命令

data=$( curl -k -u username:password https://<splunk_endpoint>/services/search/jobs -d 'search=search earliest=-1m index=_internal')
echo $data

Bash 输出: 1538748227.228319_D07875A9-FDD6-46E8-BE77-EDF9BD9A73B1

python 请求

import requests

baseurl = 'https://<splunk_endpoint>/services/search/jobs'

headers = {
    "Content-Type": "application/json",
}

data = {
    'username': 'username',
    'password': 'password',
    "search": "search earliest=-1m index=_internal",
}

r = requests.get(baseurl, data=json.dumps(data), headers=headers)
print(r.json())

我不确定将用户名和密码放在哪里。那属于 'data' 吗?在 headers?别的地方?我也不知道我的-d conversino 到数据字典是否正确。我觉得是。

任何想法

Requests 库验证 HTTPS 请求的 SSL 证书。您很可能使用的是不匹配的 Splunk 自签名证书。

您可以通过在 get 中添加 verify=False 来忽略此检查。

r = requests.get(baseurl, data=json.dumps(data), headers=headers, verify=False)

我在寻找使用 Python 的请求库与 Splunk 交互时遇到了这个问题。我不知道如何创建搜索负载。这是我安排作业和获取 SID 的基本代码:

import requests
    
username = 'my_username'
password = 'my_password'
search = {'search':'search earliest=-5m index=_internal'}

r = requests.post('https://splunk-search:8089/services/search/jobs/', auth=(my_username, my_password), data=search, verify="/etc/pki/tls/cert.pem")

print(r.text)