Python получает вывод нескольких сетевых устройств, используя ciscoconfparse

Мне нужна помощь, чтобы получить результат, который я получаю, используя скрипт ниже по-другому. У меня есть несколько устройств, поэтому не могу многократно печатать для каждого устройства, и это займет много времени. Таким образом, я извлекаю сведения об устройстве из текстового файла, но не могу получить результат, как я получаю в приведенном ниже сценарии.

Ниже сценарий дает точный вывод, который я ищу.

from netmiko import ConnectHandler
import pandas as pd
from ciscoconfparse import CiscoConfParse
#username and password
user = 'chris'
password = 'cathy'

#First Device
Device1 = {'device_type': 'cisco_ios', 'ip': '10.10.20.1', 'username': user, 'password': password, 'port': 22}
net_connect = ConnectHandler(**Device1)
output = net_connect.send_command("show run")
cfg = output.split('\n')
parse = CiscoConfParse(cfg)
interface = parse.find_objects(r"^interface.+?thernet")
chn = list()
for inter in interface:
    if inter.re_search_children(r"dot1x"):
        chn.append((inter.text, "dot1x Enabled"))
    else:
        chn.append((inter.text, "dot1x Disabled"))

# Second Device
Device2 = {'device_type': 'cisco_ios', 'ip': '10.10.20.2', 'username': user, 'password': password, 'port': 22}
net_connect1 = ConnectHandler(**Device2)
output1 = net_connect1.send_command("show run")
cfg1 = output1.split('\n')
parse1 = CiscoConfParse(cfg1)
interface1 = parse1.find_objects(r"^interface.+?thernet")
chn1 = list()
for inter1 in interface1:
    if inter1.re_search_children(r"dot1x"):
        chn1.append((inter1.text, "dot1x Enabled"))
    else:
        chn1.append((inter1.text, "dot1x Disabled"))

#Export CSV using Pandas

csv_path = 'RESULT.xlsx'
Device1_csv = pd.DataFrame(data=chn, columns=('Interface', 'Dot1x'))
Device2_csv = pd.DataFrame(data=chn1, columns=('Interface', 'Dot1x'))
device_con = pd.concat(dict(Device1=Device1_csv,Device2=Device2_csv),axis=1)
writer = pd.ExcelWriter(csv_path, engine='xlsxwriter')
device_con.to_excel(writer, sheet_name='Devices')

Успешный результат

Я пытаюсь получить тот же результат из приведенного выше сценария, но не могу получить. пожалуйста помоги!

from netmiko import ConnectHandler
from ciscoconfparse import CiscoConfParse
import pandas as pd

with open('C:/Users/ssamy/Desktop/device.txt', 'r') as f:
    device_list = f.read().splitlines()
UN = 'chris'
PW = 'cathy'
for devices in device_list:
    print('Connecting to the Device: ' + devices)
    ip_address_of_device = devices
    switch = {'device_type': 'cisco_ios', 'ip': ip_address_of_device, 'username': UN, 'password': PW, 'port': 22}
    connect = ConnectHandler(**switch)
    output = connect.send_command_expect('show run')
    cfg = output.split('\n')
    parse = CiscoConfParse(cfg)
    interface = parse.find_objects(r"^interface.+?thernet")
    all = []
    for inter in interface:
        if inter.re_search_children(r"dot1x"):
            all.append((inter.text, "dot1x Enabled"))
        else:
            all.append((inter.text, "dot1x Disabled"))

        excel_path = 'ciscointerface.xlsx'
        path = pd.DataFrame(data=all, columns=('Interface', 'Dot1x'))
        writer = pd.ExcelWriter(excel_path, engine='xlsxwriter')
        path.to_excel(writer, sheet_name='Devices', index=False, encoding='utf-8')

f.close()

0 ответов

Другие вопросы по тегам