代码之家  ›  专栏  ›  技术社区  ›  Micah Pearce

将splunk api curl命令转换为python

  •  0
  • Micah Pearce  · 技术社区  · 7 年前

    我可以在bash中运行splunk api调用并获取一个SID,然后用它来获取splunk查询。第一部分如下。但是,我在使用将此更改为python请求时遇到了问题 requests . 我一直在找工作 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())
    

    我不太清楚用户名和密码应该放在哪里。这属于“数据”吗?在标题中?在别的地方?我也不知道我对数据字典的-d转换是否正确。我想是的。

    有什么想法吗

    1 回复  |  直到 7 年前
        1
  •  1
  •   Simon Duff    7 年前

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

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

        2
  •  0
  •   TomTom    5 年前

    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)