从requests.post()返回的结果?

2024-04-23 23:12:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个小的python脚本,该脚本应该从icinga服务器返回一个数据列表——我使用的是curl,但我需要python中的它。这是curl版本:

$ curl -k -s -u karl:marx -H 'Accept: application/json' -H 'X-HTTP-Method-Override: GET' -X POST 'https://zenoss.hpc.ic.ac.uk:5665/v1/objects/services' -d '{ "filter": "service.state==state && match(pattern,service.name)", "filter_vars": { "state": 2, "pattern": "*checkmem" } }' | jq '.results[].attrs | [.host_name, .name, .last_check_result.output] | @csv' | sed -e 's/.cx1.hpc.ic.ac.uk//g' -e 's/\\n/\n/g' -e 's/\"\\\"//g' -e 's/\\\",\\\"/\n/g' -e 'a ------'

我认为实现这一点的python脚本是:

$ cat icinga_report
#!/usr/bin/python

import requests
import json
import sys

if len(sys.argv)==3:
    state=int(sys.argv[1])
    service=sys.argv[2]
else:
    print 'Usage: icinga_report state service'
    sys.exit()

hdr={
    'Accept':'application/json',
    'X-HTTP-Method-Override':'GET'
}
aut=(
    'karl',
    'marx'
)
url='https://zenoss.hpc.imperial.ac.uk:5665/v1/objects/services'
dat={
    'filter':'service.state==state && match(pattern,service.name)',
    'filter_vars':{
        'state':int('%d'%state),
        'pattern':'*%s'%service
    }
}

res=requests.post(
    url,
    headers=hdr,
    auth=aut,
    data=json.dumps(dat)
)

print res

但是,运行脚本的输出:

$ ./icinga_report 2 checkmem
<Response [200]>

事实上,如果我使用任何其他有效的URL,看起来都是一样的——我只得到了响应代码。我做错了什么


Tags: nameimportreport脚本jsonservicesyscurl