【发布时间】:2019-06-05 22:02:40
【问题描述】:
我能够得到 api 请求的响应,并让它给我所有的细节。我解码 json response.json() 并使用 open() 和 json.dump 创建文件。我能够在列表中看到对象的所有键和值。接下来我想获取一个特定的键/值,以便我可以将它用作我的其他 python 脚本的输入。
我能够从 api 请求并解码 json 并通过 json.dump 创建 json 文件并列出所有对象。
我的python代码查询和创建json文件。
import requests
import json
#API request details
url = 'api url'
data = '{"service":"ssh", "user_id":"0", "action":"read_by_user",
"user":"D2", "keyword":"NULL"}'
headers = {"Content-Type": "application/json"}
#Making http request
response = requests.post(url,data=data,headers=headers,verify=False)
print(response)
#Json string
json_disco = response.text
print(type(json_disco))
print(json_disco)
#Decode response.json() method to a python dictionary and use the data
device_disco = response.json()
print(type(device_disco))
print(device_disco)
with open('devices.json', 'w') as fp:
json.dump(device_disco, fp, indent=4, sort_keys=True)
这是我使用netmiko模块访问设备的代码
with open('devices.json') as dev_file:
devices = json.load(dev_file)
print(devices)
netmiko_exceptions = (netmiko.ssh_exception.NetMikoTimeoutException,
netmiko.ssh_exception.NetMikoAuthenticationException)
for device in devices['device']:
try:
print('~' * 79)
print('Connecting to device:',device['ip'])
connection = netmiko.ConnectHandler(**device)
print(connection.send_command('show interfaces'))
connection.disconnect()
except netmiko_exceptions as e:
print('Failed to ', device['ip'], e)
通过 ssh 访问数组 'device['ip'] 中的设备,这些设备引用包含登录名/ip/密码等所有详细信息的 json 文件。
来自 api 查询的 JSON 响应,响应的所有详细信息如下; 从此....
{
"status": "SUCCESS",
"device": [
{
"model":"XXXX-A",
"username": "login1",
"ip": "10.10.10.1",
"password": "123",
"device_type": "cisco_ios"
},
{
"model":"XXXX-A",
"username": "login2",
"ip": "10.10.10.2",
"password": "456",
"device_type": "cisco_ios"
},
{
"model":"XXXX-A",
"username": "login3",
"ip": "10.10.10.3",
"password": "test",
"device_type": "cisco_ios"
}
]
}
我只想提取用户名、ip 和密码的键和值,并且仍然是下面的 json 格式。 对此……
{
"status": "SUCCESS",
"device": [
{
"username": "login1",
"ip": "10.10.10.1",
"password": "123"
},
{
"username": "login2",
"ip": "10.10.10.2",
"password": "456"
},
{
"username": "login3",
"ip": "10.10.10.3",
"password": "test"
}
]
}
我无法从每个对象中提取特定的键和值并以上述 json 列表格式打印。
如果我的其他帖子,这个问题是其中的一部分,但我将它作为一个单独的问题,因为该帖子已经得到回答,以避免任何混淆。我真的需要专家的帮助、支持和指导,我将不胜感激。谢谢
【问题讨论】: