daf*_*ero 5 python curl kerberos httprequest theforeman
我想用Python编写一个脚本,该脚本提供了两个参数host&hostgroup,使用Foreman API(http://theforeman.org/api/apidoc/v1/hosts/update.html)更改了主机的主机组。
要执行此操作的cURL命令如下所示(有效!):
curl -s -H "Accept:application/json" -X PUT --insecure --negotiate -u : -d "host[hostgroup_id]=ZZZZZ" https://foreman.mydomain.com:443/api/hosts/XXXX
Run Code Online (Sandbox Code Playgroud)
但是现在,我想使用Python脚本来做到这一点。
我使用的Python 请求库没有问题,直到我必须传递参数时为止。
我正在关注此信息http://docs.python-requests.org/en/latest/user/quickstart/#passing-parameters-in-urls,但显然这是行不通的,因为这不是领班API期望的方式接收参数。
那么,有什么想法可以以Foreman可以理解的方式传递参数吗?
在此先感谢您的帮助!
Sorry, I found out the way to do it but I forgot to post it. The next code would do the trick:
def updateHost(host_id, new_hostgroup_id):
url = "https://foreman.mydomain.com:443/api/hosts/" + host_id
payload = {'host[hostgroup_id]': new_hostgroup_id}
headers = {'Accept': 'application/json'}
r = requests.put(url, data=payload, headers=headers, verify=False, uth=HTTPKerberosAuth())
if (r.status_code != requests.codes.ok):
raise BadStatusCodeRequest("HTTP Request status code error: " + r.raise_for_status())
Run Code Online (Sandbox Code Playgroud)