l oop через вложенный словарь для подключения к устройствам нескольких поставщиков в Napalm - PullRequest
0 голосов
/ 26 мая 2020

У меня установлен 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 отличается в cisco и mikrotik, в cisco мой дополнительный аргумент - это мой пароль включения, в mikrotik - это порт. Как я могу получить эти значения в моем для ? спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 01 июня 2020

Пожалуйста, попробуйте, это работает для меня. Сообщите мне вложенный словарь

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'])
0 голосов
/ 26 мая 2020

Не могли бы вы попробовать это, поскольку ваши данные находятся во вложенном словаре для ключей, значения в database_devices.items (): values ​​[1] .get ('hostname', {})

...