在字典中使用 for 循环

Use for loop with dictionary

我正在使用 Napalm 更改许多网络设备的主机名。由于每个设备的配置都不同,我需要脚本根据每个设备的 IP 地址为每个设备分配正确的配置。这似乎是字典的最佳选择。

devicelist = {'10.255.32.1': 'device1.cfg', '10.255.32.5': 'device2.cfg'}

我需要帮助在下面的脚本中为每个 IP 地址调用键值。我已经突出显示了需要这样做的代码行。

from napalm import get_network_driver
devicelist = ['10.255.32.1',
           '10.255.32.5'
           ]

for ip_address in devicelist:
    print ("Connecting to " + str(ip_address))
    driver = get_network_driver('ios')
    iosv = driver(ip_address, 'admin', 'password')
    iosv.open()
    **iosv.load_merge_candidate(filename='device1.cfg')**
    diffs = iosv.compare_config()
    if len(diffs) > 0:
        print(diffs)
        iosv.commit_config()
    else:
        print('No changes required.')
        iosv.discard_config()

    iosv.close()

您要求通过字典上的键进行简单访问,并结合字典上的 for 循环,这自动是键上的 for 循环。最小示例:

devicelist = {'10.255.32.1': 'device1.cfg', '10.255.32.5': 'device2.cfg'}

for ipAdress in devicelist:
    print("This IP : {} maps to this name: {}".format(ipAdress, devicelist[ipAdress]))

输出:

This IP : 10.255.32.1 maps to this name: device1.cfg
This IP : 10.255.32.5 maps to this name: device2.cfg