我已经安装了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()我试着在我的device=driver设备之间加逗号,但是我也连接不上。我想当我可以解决这个问题时,我会遇到另一个问题,在思科和mikrotik中,我的optional_args值是不同的,在思科中,我的可选参数是我的使能密码,在mikrotik中,我可以将此值放入我的port.How中。谢谢你的帮助。
发布于 2020-05-26 06:06:10
您是否可以尝试一下,因为您的数据在database_devices.items()中的键、值的嵌套字典中: values1.get('hostname',{})
发布于 2020-06-01 20:42:53
请试试这个,它对我很有效。让我知道nested dictionary
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'])https://stackoverflow.com/questions/62011309
复制相似问题