- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的网络团队使用 InfoBlox存储有关 IP 范围的信息(位置、国家/地区等)有一个 API 可用,但 Infoblox 的文档和示例不是很实用。
我想通过 API 搜索有关 IP 的详细信息。首先 - 我很乐意从服务器拿回任何东西。我修改了the only example I found
import requests
import json
url = "https://10.6.75.98/wapi/v1.0/"
object_type = "network"
search_string = {'network':'10.233.84.0/22'}
response = requests.get(url + object_type, verify=False,
data=json.dumps(search_string), auth=('adminname', 'adminpass'))
print "status code: ", response.status_code
print response.text
返回错误 400
status code: 400
{ "Error": "AdmConProtoError: Invalid input: '{\"network\": \"10.233.84.0/22\"}'",
"code": "Client.Ibap.Proto",
"text": "Invalid input: '{\"network\": \"10.233.84.0/22\"}'"
}
如果有人能够让这个 API 与 Python 配合使用,我将不胜感激。
<小时/> 更新:跟进解决方案,下面是一段代码(它可以工作,但它不是很好,精简,不能完美地检查错误等),如果有一天有人需要的话和我一样做。def ip2site(myip): # argument is an IP we want to know the localization of (in extensible_attributes)
baseurl = "https://the_infoblox_address/wapi/v1.0/"
# first we get the network this IP is in
r = requests.get(baseurl+"ipv4address?ip_address="+myip, auth=('youruser', 'yourpassword'), verify=False)
j = simplejson.loads(r.content)
# if the IP is not in any network an error message is dumped, including among others a key 'code'
if 'code' not in j:
mynetwork = j[0]['network']
# now we get the extended atributes for that network
r = requests.get(baseurl+"network?network="+mynetwork+"&_return_fields=extensible_attributes", auth=('youruser', 'youpassword'), verify=False)
j = simplejson.loads(r.content)
location = j[0]['extensible_attributes']['Location']
ipdict[myip] = location
return location
else:
return "ERROR_IP_NOT_MAPPED_TO_SITE"
最佳答案
通过使用 requests.get 和 json.dumps,您是否在向查询字符串添加 JSON 的同时发送 GET 请求?本质上,做一个
GET https://10.6.75.98/wapi/v1.0/network?{\"network\": \"10.233.84.0/22\"}
我一直在 Perl 中使用 WebAPI,而不是 Python,但如果这就是您的代码尝试执行操作的方式,它可能不会很好地工作。要将 JSON 发送到服务器,请执行 POST 并添加一个“_method”参数,并将“GET”作为值:
POST https://10.6.75.98/wapi/v1.0/network
Content: {
"_method": "GET",
"network": "10.233.84.0/22"
}
Content-Type: application/json
<小时/>
或者,不将 JSON 发送到服务器并发送
GET https://10.6.75.98/wapi/v1.0/network?network=10.233.84.0/22
我猜你可以通过从代码中删除 json.dumps 并将 search_string 直接传递给 requests.get 来实现。
关于python - Infoblox WAPI : how to search for an IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549530/
我们将 SSL/TLS 证书加载到 infoblox NIOS 设备中,这是更新/更便宜的证书之一,通常需要中间证书才能在现代网络浏览器中完成真实性验证。 infoblox NIOS 设备服务器不再受
我们的网络团队使用 InfoBlox存储有关 IP 范围的信息(位置、国家/地区等)有一个 API 可用,但 Infoblox 的文档和示例不是很实用。 我想通过 API 搜索有关 IP 的详细信息。
我是一名优秀的程序员,十分优秀!