【Python】批量读取交换机型号、系列号、MAC地址、生产日期等

前提是要开启SSH

思路通过登录设备后,用命令display device manuinfo提取设备信息,display version提取版本信息后,进行筛选出设备型号、系列号、mac地址、生产日期、设备生产厂商、设备版本如是V3,V5,V7,及多少电口多少光口。

以下代码是整合先单独备份配置及所有查询到的信息先保存一个txt,然后对交换机的设备信息,及版本信息分别保存两表格。后期会整合成一个表格,优化空间还很大。有时间再弄。

import pandas as pd
from netmiko import ConnectHandler

# 读取Excel文件
df = pd.read_excel('1.xlsx', engine='openpyxl')  # 替换为你的Excel文件路径

# 创建一个空的DataFrame来保存设备信息
device_info_df = pd.DataFrame(columns=['IP', 'DEVICE_NAME', 'DEVICE_SERIAL_NUMBER',
                                       'MAC_ADDRESS', 'MANUFACTURING_DATE', 'VENDOR_NAME'])

# 创建一个空的DataFrame来保存版本信息
version_info_df = pd.DataFrame(columns=['IP', 'SOFTWARE_VERSION', 'DEVICE_MODEL'])

# 遍历每一行
for index, row in df.iterrows():
    device = {
        'device_type': 'hp_comware',  # 修改为你的设备类型
        'ip': row['ip'],  # 替换为你的Excel文件中的列名
        'username': row['Username'],  # 替换为你的Excel文件中的列名
        'password': str(row['Password']),  # 将密码转换为字符串# 替换为你的Excel文件中的列名
    }

    # 你要执行的命令列表
    commands = ['display current-configuration', 'display device manuinfo', 'display version']

    # 连接到设备
    with ConnectHandler(**device) as connection:
        # 打开文件
        with open(f'{device["ip"]}_backup.txt', 'w') as file:
            for command in commands:
                output = connection.send_command(command)  # 执行命令
                file.write(f'Command: {command}\nOutput:\n{output}\n')  # 将结果写入文件
                file.write('*' * 500 + '\n')  # 添加分隔符

                # 提取设备信息
                if 'display device manuinfo' in command:
                    lines = output.split('\n')
                    device_info = {'IP': device["ip"], 'DEVICE_NAME': 'Not found', 'DEVICE_SERIAL_NUMBER': 'Not found',
                                   'MAC_ADDRESS': 'Not found', 'MANUFACTURING_DATE': 'Not found',
                                   'VENDOR_NAME': 'Not found'}  # 默认值
                    for line in lines:
                        for key in device_info.keys():
                            if key in line:
                                device_info[key] = line.split(':')[-1].strip()
                    # 将设备信息添加到DataFrame
                    device_info_df.loc[len(device_info_df)] = device_info

                # 提取版本信息
                if 'display version' in command:
                    lines = output.split('\n')
                    version_info = {'IP': device["ip"], 'SOFTWARE_VERSION': 'Not found', 'DEVICE_MODEL': 'Not found'}
                    for line in lines:
                        if 'System image version' in line:
                            version_info['SOFTWARE_VERSION'] = line.split(':')[-1].strip()
                        if '[SubSlot 0]' in line:
                            version_info['DEVICE_MODEL'] = line.split(']')[-1].strip()
                    # 将版本信息添加到DataFrame
                    version_info_df.loc[len(version_info_df)] = version_info

print("Backup completed for all devices.")

# 将设备信息保存到Excel文件
device_info_df.to_excel('device_info.xlsx', index=False)

# 将版本信息保存到Excel文件
version_info_df.to_excel('version_info.xlsx', index=False)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值