使用访问令牌的 Splunk 保存搜索的 Http get 方法

Http get method for Splunk saved search using access token

如果我们通过访问令牌访问保存的搜索数据,正确的 HTTP get 请求调用语法是什么?

我的 curl 命令有效,但 http.get 无效。

curl 命令:

#os.system('curl -H "Authorization: Bearer <token>" 
 <baseurl>:8089/services/search/jobs/export --data search="savedsearch abc_backup_status" -d output_mode=csv')

请求调用:::

BASE_URL = '<baseurl>:8089/services/search/jobs/export'
data = {"search":"savedsearch abc_backup_status"}
headers = {'Authorization': "Bearer <token>"}
auth_response = requests.get(BASE_URL, headers=headers, data = data, verify=False)

这给出了 400 个错误。

curl 选项 -d--data 默认使用 POST 方法。

发件人:https://man7.org/linux/man-pages/man1/curl.1.html

  -d, --data <data>
        (HTTP MQTT) Sends the specified data in a POST request to
        the HTTP server, in the same way that a browser does when
        a user has filled in an HTML form and presses the submit
        button. This will cause curl to pass the data to the
        server using the content-type application/x-www-form-
        urlencoded.  Compare to -F, --form.

有趣的是,Splunk Docs claim search/jobs/export 需要一个 GET,但你正在创建一个立即导出的作业,这感觉就像一个 POST 类型的操作。

我还注意到您的搜索以 savedsearch 命令开始,如果这是定期安排的 savedsearch,您可能需要 GET saved/searches/{name}/history 以获取最后执行的 SID,然后是结果或事件端点已经执行的作业,而不是新的搜索....但这是一个用例问题