После некоторых исследований я смог получить данные через RESTful API от сетевого устройства:Форматирование ответа HTTPLIB (JSON)
if sys.version_info >= (2,7,9):
import ssl
conn = httplib.HTTPSConnection('192.168.158.136', 443, context=ssl._create_unverified_context())
else:
conn = httplib.HTTPSConnection('192.168.158.136', 443)
headers = {"Authorization" : "Basic %s" % base64.b64encode('user:pass'),
"Content-Type" : "application/json"}
url="https://192.168.158.136/wapi/v1.2/network?_return_fields%2b=extattrs"
conn.request('GET', url, headers=headers)
response = conn.getresponse()
print response.read()
conn.close()
Это выводит меня JSon отформатированный список объектов мне нужно:
[
{
"_ref": "network/ZG5zLm5ldHdvcmskMTAuMC4wLjAvMjQvMA:10.0.0.0/24/default",
"extattrs": {
"Location": {
"value": "NAU"
}
},
"network": "10.0.0.0/24",
"network_view": "default"
},
{
"_ref": "network/ZG5zLm5ldHdvcmskMTAuMS4xLjAvMjQvMA:10.1.1.0/24/default",
"extattrs": {
"Location": {
"value": "BTN"
}
},
"network": "10.1.1.0/24",
"network_view": "default"
},
{
"_ref": "network/ZG5zLm5ldHdvcmskMTAuMi4yLjAvMjQvMA:10.2.2.0/24/default",
"extattrs": {
"Location": {
"value": "TRT"
}
},
"network": "10.2.2.0/24",
"network_view": "default"
},
{
"_ref": "network/ZG5zLm5ldHdvcmskMTkyLjE2OC4wLjAvMTYvMA:192.168.0.0/16/default",
"extattrs": {
"Location": {
"value": "MCW"
}
},
"network": "192.168.0.0/16",
"network_view": "default"
}
]
Теперь мне нужно «как-то» формат, который в качестве списка, который содержит только «сеть» и содержимое extattrs
«Местоположение» (и только для местоположения, будут другие, но мне нужно только место) в формат:
Network Location, т.е.
10.0.0.0/24 NAU 10.1.1.0/24 BTN 10.2.2.0/24 TRT 192.168.0.0/16 MCW
Я изо всех сил в получении это было сделано, то есть переформатирования кода JSON я получаю обратно из запроса.
Используйте модуль JSON, чтобы преобразовать это питон структуру данных. Вы получите список dicts. Пройдите по списку, распечатав значение для ключевой «сети». – Anthon
@ForceBru: Спасибо за редактирование, но «admin: infoblox» уже был фиктивным паролем, ничего реального – f0rd42
@AndreDieball, я его не трогал. Существует [другое изменение] (http://stackoverflow.com/revisions/29968834/2), которое повлияло на этот пароль – ForceBru