python 解析网络设备配置文件

适用于华为华三交换机防火墙配置文件格式

增加解析汇总 ACL ,方便查看 ACL应用在哪些接口及ACL规则信息

用于定时备份设备配置文件后,对配置文件的变化做出分析。

对运行状态配置和保存配置进行对比,发现差异配置。

支持

文本文件配置文件:vrpcfg.cfg

压缩包配置文件:vrpcfg.zip(自动下载交换机/防火墙配置文件可参考其他文章)

dis cu 命令查询结果配置(自动登录并执行命令,保存回显结果可参考其他文章)

#!/usr/local/python3/bin/python3
# -*- coding: utf8 -*-
import sys, time, os, zipfile

## 终端显示颜色
if os.name == 'nt':       # Windows
    import ctypes,sys
    STD_OUTPUT_HANDLE = -11
    
    # Windows CMD命令行 字体颜色定义 text colors
    黑字 = 0x00 # black.
    FOREGROUND_DARKBLUE = 0x01 # dark blue.
    FOREGROUND_DARKGREEN = 0x02 # dark green.
    FOREGROUND_DARKSKYBLUE = 0x03 # dark skyblue.
    FOREGROUND_DARKRED = 0x04 # dark red.
    FOREGROUND_DARKPINK = 0x05 # dark pink.
    FOREGROUND_DARKYELLOW = 0x06 # dark yellow.
    FOREGROUND_DARKWHITE = 0x07 # dark white.
    FOREGROUND_DARKGRAY = 0x08 # dark gray.
    FOREGROUND_BLUE = 0x09 # blue.
    FOREGROUND_GREEN = 0x0a # green.
    FOREGROUND_SKYBLUE = 0x0b # skyblue.
    FOREGROUND_RED = 0x0c # red.
    FOREGROUND_PINK = 0x0d # pink.
    FOREGROUND_YELLOW = 0x0e # yellow.
    FOREGROUND_WHITE = 0x0f # white.
    
    std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
    
    def set_cmd_text_color(color, handle=std_out_handle):
        Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
        return Bool
    
    def resetColor():
        set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)
    
    def 打印_黑(TEXT, SHOW=1):
        if SHOW == 1:
            set_cmd_text_color(黑字)
            sys.stdout.write(TEXT+'\n')
            resetColor()
    def 打印_红(TEXT, SHOW=1):
        if SHOW == 1:
            set_cmd_text_color(FOREGROUND_RED)
            sys.stdout.write(TEXT+'\n')
            resetColor()
    def 打印_绿(TEXT, SHOW=1):
        if SHOW == 1:
            set_cmd_text_color(FOREGROUND_GREEN)
            sys.stdout.write(TEXT+'\n')
            resetColor()
    def 打印_黄(TEXT, SHOW=1):
        if SHOW == 1:
            set_cmd_text_color(FOREGROUND_YELLOW)
            sys.stdout.write(TEXT+'\n')
            resetColor()
    def 打印_蓝(TEXT, SHOW=1):
        if SHOW == 1:
            set_cmd_text_color(FOREGROUND_BLUE)
            sys.stdout.write(TEXT+'\n')
            resetColor()
    def 打印_紫(TEXT, SHOW=1):
        if SHOW == 1:
            set_cmd_text_color(FOREGROUND_PINK)
            sys.stdout.write(TEXT+'\n')
            resetColor()
    
    def 打印_青(TEXT, SHOW=1):
        if SHOW == 1:
            set_cmd_text_color(FOREGROUND_SKYBLUE)
            sys.stdout.write(TEXT+'\n')
            resetColor()
elif os.name == 'posix':  # Linux
    
    def 打印_黑(TEXT, SHOW=1):
        if SHOW == 1:
            print(f"\033[0;30;1m{TEXT}\033[0m")
    
    def 打印_红(TEXT, SHOW=1):
        if SHOW == 1:
            print(f"\033[0;31;1m{TEXT}\033[0m")
    
    def 打印_绿(TEXT, SHOW=1):
        if SHOW == 1:
            print(f"\033[0;32;1m{TEXT}\033[0m")
    
    def 打印_黄(TEXT, SHOW=1):
        if SHOW == 1:
            print(f"\033[0;33;1m{TEXT}\033[0m")
    
    def 打印_蓝(TEXT, SHOW=1):
        if SHOW == 1:
            print(f"\033[0;34;1m{TEXT}\033[0m")
    
    def 打印_紫(TEXT, SHOW=1):
        if SHOW == 1:
            print(f"\033[0;35;1m{TEXT}\033[0m")
    
    def 打印_青(TEXT, SHOW=1):
        if SHOW == 1:
            print(f"\033[0;36;1m{TEXT}\033[0m")
    
    def 打印_白(TEXT, SHOW=1):
        if SHOW == 1:
            print(f"\033[0;37;1m{TEXT}\033[0m")

## 读取网络设备上下载的 startup.cfg 配置文件(文本文件)
## 读取 dis cu 查询配置保存下来的文本文件
def 读取文本文件内容(FILE_PATH):
    L_编码 = ['UTF8', 'GB2312', 'GBK', 'BIG5']
    TEXT = None
    if os.path.isfile(FILE_PATH):
        for 编码 in L_编码:
            try:
                #print(f"尝试 {编码}")
                f = open(FILE_PATH, 'r', encoding=编码)
                TEXT = f.read()
            except Exception as e:
                f.close()
                #打印_红(f"{编码}编码读取{FILE_PATH}失败{e}")
            else:
                f.close()
                #print(f"成功 TE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值