循环访问嵌套字典以连接 Napalm 中的多个供应商设备



我安装了 NAPALM 并努力一次从单个设备获取事实。但是,我的设备使事情变得有点不同,现在我正在尝试使用嵌套字典连接到我的设备,但是我遇到了错误。

import napalm
from napalm_ros import ros

database_devices={
"cisco":{
"hostname":"152.0.0.2",
"type":"ios",
"username":"cisco",
"password":"cisco",
"optional_args":{"secret" : "cisco"}
},
"mikrotik":{
"hostname":"152.0.0.2",
"type":"ros",
"username":"mikrotik",
"password":"mikrotik",
"optional_args":{"port" :  "8728 "}
}
}

for key,values in database_devices.items():
print("Connecting to " + key)
driver=napalm.get_network_driver(values.get("type",{}))
device=driver(
hostname=values.get("hostname",{})
username=values.get("username",{})
password=values.get("password"),{})
optional_args=values.get("optional_args",{})

device.open()

我试图在设备=驱动程序中的设备之间放置逗号,但我也无法连接。 我想当我可以解决这个问题时,我会遇到另一个问题,我的optional_args值在思科和 mikrotik 中是不同的,在思科中,我的可选参数是我的启用密码,在 mikrotik 中是一个端口。我怎样才能把这个值放到我的 for 中? 感谢您的任何帮助。

你能试试这个吗,因为你的数据在嵌套字典中 对于键,database_devices.items(( 中的值: values[1].get('hostname',{}(

请尝试这个它对我有用。让我知道 嵌套字典

for k,v in database_devices.items():
print('hostname '+v['hostname'])
print('type:',v['type'])
print('username: ',v['username'])
print('password: ',v['password'])
print('optional_args ',v['optional_args'])

最新更新