您的位置:首页 > 数据 >
每日精选:正则解析网络运维数据之OneTake 解析网络运维数据
来源:CSDN 2023-01-13 10:51:28

今天我们带大家写个正则表达式,解析一下我们的网络运维数据。写的时候我会分成两种风格:


(相关资料图)

one take

分而治之分别对应网络配置中的两种常见的形式。

今天的分享,我们先讲one take,也就是一次完成提取。【林志炫的专辑】。

网络设备配置(show 出来的,包含config和status)的解析有些是适合一次过的,比如show mac,arp,interface brief等很多信息在一行中的。我们只要写好一个正则,很多信息都可以一次获取解析出来。这种最大的特点就是一行包含一条信息。

我们登陆devnet提供的一台虚拟的N9K设备,执行命令show int brief如下

讲下我的思路,写一个正则,能提取端口信息的每个字段信息,然后把整个log用换行切割开,for循环,提取每行内的端口信息,有就追加到一个端口列表中,没有继续下一行。直到循环结束,我们就可以拿到所有端口的信息了。

下面我们开始写正则。其实从show出来的log里我们也能知道我们需提取那些字段,比如端口名,vlan,类型,模式,状态以及状态的原因,速率,所属的portchannel。我们就一一解析出来。

我们先直接上代码,然后细细讲讲

写一次正则,然后每行去正则匹配,就可以非常方便的把信息解析出来了。

这个正则看起来很复杂,可能吓跑很多同学,咱们别着急,庖丁解牛,一个个的分析,其实很容易就写出正则。

我们看到最初的配置,我们在行内从端口名称一个个找。

首先写端口的名称 是“Eth数字\数字”,我们写成正则就是Eth\d+/\d+,我们捕获这个子串,用圆括号圈起来就是“(Eth\d+/\d+)”,然后是vlan 是数字或者“--”,我们可以写成“(\d+|--)”,和端口中间是空格,为了不数空格,我们用\s+来代表多个空格,我们就接着在端口的正则后面写“(Eth\d+/\d+) \s+(\d+|--)”

我们每写一点可以执行代码,去匹配一下看看输出结果,看看能不能解析打印出来,不合适的就去调整。

正则的方式千千万万,我们可以适当的去调整它的一些特征,去尽量匹配准确一些,比如access、trunk、routed三种,将来万一再多一些,我们可以把这段用“(\w+)”去捕获,比较限定死的方式是“(access|trunk|routed)”,大家根据自己情况去写。后面就一点点加进去。

这里面有个小坑,就是reason。

端口状态的原因有可能是两个单词也可能是一个单词,这个时候我们如果用字符去匹配的话没法兼容两种情况。

所以我用的方法是“([\s\S]+?)”匹配原因,后面的在端口速率和portchannel那写死,中间用贪婪匹配所有的状态和速率之间的字符或者空格,这样就提取除了reason 这个字段。

写的过程中,我是一次写完正则,但是没过,后来我从后面去除一些正则,加一个,打印正确就再加一个再试试。这个方法大家可以去尝试,一次过,真的很不容易。

这个特别适合写mac arp 端口(brief)一行的情况解析。

我们再来练习一个arp地址解析吧。

arp的特征非常明显,IP地址,存活时间,mac地址和端口

开启第一视角,先去匹配IP,这个IP不是那么严谨,但是在匹配过程中足够了,注意“.”在正则里是有特殊含义的,所以需要转义。

然后陆续添加时间,我们可以用非空字符去表示,那就是(\S+)

mac地址是“([a-fA-F0-9]{4}\.[a-fA-F0-9]{4}\.[a-fA-F0-9]{4})” 这个用了严谨的写法,就是给大家更多思路。

vlan的我就不写了 大家自己动手谢谢试试吧

今天分享的讲了怎么用正则处理这种单行的解析。有些负责的我们会用分而治之的方法,比如端口的配置或者show,后续分享。

解析不是目的,数据产生是后续场景使用的基础,数据的使用才是目的。比如我们统计资源信息、做安全管理、IP地位等等。

一定要落地到场景里去,大家每次想问题也要带着场景去思考,我能用自动化做什么,这个事情能不能用自动化做等等。

补充一个知识点:分割行的时候我们用的是\n,大家根据实际情况去分割。

Linux采集下的大部分是\r\n 有时候是\\r\\n,建议大家采集回来后统一替换。

关于这个大家可以看看

https://blog.csdn.net/m0_37665137/article/details/79579746

最后奉上两端代码:

我们只是打印出来,大家按实际使用去消费数据,建议封装成字典或者对象入库入表。包括“--”我没有处理成None或者其他值,都是需要大家注意的地方。

import rewith open("show_int_bri.log","r",encoding="utf8") as f:    log = f.read()    interfae_info_pattern = re.compile(r"(Eth\d+/\d+)\s+(\d+|--)\s+(\w+)\s+(\w+)\s+(\w+)\s+([\s\S]+?)\s+(\w+)\(D\)\s+(\S+)")    lines = log.split("\n")    for line in lines:        match =  interfae_info_pattern.match(line)        if match:            print(match.groups())
import rewith open("showarp.log","r",encoding="utf8") as f:    log = f.read()    arp_pattern = re.compile(r"(\d+\.\d+\.\d+\.\d+)\s+(\S+)\s+([a-fA-F0-9]{4}\.[a-fA-F0-9]{4}\.[a-fA-F0-9]{4})")    lines = log.split("\n")    for line in lines:        match =  arp_pattern.match(line)        if match:            print(match.groups())
关键词:
相关文章
2022年榆林市原煤产量为5.82亿吨 增长5.4%_当前热议

2022年榆林市原煤产量为5.82亿吨 增长5.4%_当前热议

  新年伊始,位于陕西省榆林市的煤炭生产企业开足马力、加紧生产,释放煤炭产能,多措并举保障煤炭运输,持续做好能源稳定保供工作。  作更多

2023-01-13 10:04:22
12月第五周云南省煤炭价格环比小幅上涨_世界快资讯

12月第五周云南省煤炭价格环比小幅上涨_世界快资讯

  据商务部重要生产资料市场监测系统显示,上周(2022年12月26日-2023年1月1日),云南省煤炭均价为15219元吨,环比上涨19%。其中,炼焦煤均更多

2023-01-13 10:05:35
12月第五周福建省煤炭市场价格稳中上涨 环球聚看点

12月第五周福建省煤炭市场价格稳中上涨 环球聚看点

  根据商务部重要生产资料监测系统监测数据显示,上周(2022年12月26日-2023年1月1日)福建省监测样本企业的煤炭市场价格平均为163856元吨,更多

2023-01-13 10:03:07
1月份第一周天津市煤炭价格环比持平|世界视点

1月份第一周天津市煤炭价格环比持平|世界视点

  据天津市市场运行监测数据显示,1月份第一周(1月2日-1月8日),天津市煤炭均价为734元吨,环比持平。上周煤炭核心驱动来自于国内疫情对生更多

2023-01-13 10:13:05
当前速看:焦煤:春节期间暂稳 后期压力渐增

当前速看:焦煤:春节期间暂稳 后期压力渐增

  临近春节,随着部分煤矿放假逐渐增多,钢厂和焦化厂焦煤补库接近尾声,叠加焦炭市场两轮降价,焦煤市场略显疲弱。因部分需求仍在,春节期更多

2023-01-13 10:17:03
山西焦化通过环保B级企业认定

山西焦化通过环保B级企业认定

  2022年以来,山西焦化多措并举推动环保工作落实落细。日前,该公司通过山西省环保厅的B级企业认定。  山西焦化成立环境监控中心,通过提更多

2023-01-13 09:07:14
平煤股份发行可转债获证监会审核通过_每日头条

平煤股份发行可转债获证监会审核通过_每日头条

  1月10日,平煤股份公告称,1月9日中国证监会第十八届发审委2023年第4次工作会议对公司公开发行可转换公司债券的申请进行了审核。根据会议更多

2023-01-13 09:01:14
12月中煤能源商品煤产量同比下降13.6% 销量下降19.2%

12月中煤能源商品煤产量同比下降13.6% 销量下降19.2%

  中煤能源1月11日发布的公告显示,2022年12月份,中煤能源商品煤产量为885万吨,同比下降136%,而上月为下降9%;环比减少33万吨,下降36%。更多

2023-01-13 09:12:54
环球快看点丨2023年山西力争煤炭产量达到13.65亿吨

环球快看点丨2023年山西力争煤炭产量达到13.65亿吨

  1月12日,山西省第十四届人民代表大会第一次会议开幕,山西省人民政府代省长金湘军作政府工作报告时讲到,2023年,山西将以制造业振兴为重更多

2023-01-13 08:57:13
解读:2022年12月份CPI同比涨幅略有扩大 PPI同比降幅有所收窄

解读:2022年12月份CPI同比涨幅略有扩大 PPI同比

  国家统计局今天发布了2022年12月份全国CPI(居民消费价格指数)和PPI(工业生产者出厂价格指数)数据。对此,国家统计局城市司首席统计师更多

2023-01-12 15:08:24