正则解析网络运维数据之OneTake 解析网络运维数据:环球焦点
今天我们带大家写个正则表达式,解析一下我们的网络运维数据。写的时候我会分成两种风格:
(相关资料图)
分而治之分别对应网络配置中的两种常见的形式。
今天的分享,我们先讲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,建议大家采集回来后统一替换。
最后奉上两端代码:
我们只是打印出来,大家按实际使用去消费数据,建议封装成字典或者对象入库入表。包括“--”我没有处理成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())
标签:
相关推荐:
最新新闻:
- 如何给自己的网站接入谷歌联盟?方法步骤 每日消息
- 全球观焦点:系统冗余是什么?冗余的详情介绍
- 今日观点!如何使用lock_guard锁定mutex?java中mutex的使用方法
- 如何下载天地图离线地图瓦片数据?离线地图的下载方式
- 定时器和延时器的区别 定时器和延时器的异步语句|当前关注
- 如何让少儿学好英语字母?26个英文字母背诵顺口溜_视讯
- 互补品的需求曲线图是什么?微观经济学中的供给与需求定律
- 【前沿重器】句子相似度和匹配心法利器 全球即时看
- 西门子PLC7怎么防止错误操作?西门子PLC梯形图编程规则
- WIN+R:程序运行窗口或者打开某个文件
- 正则解析网络运维数据之OneTake 解析网络运维数据:环球焦点
- 时隔17年还是万人迷 41岁陈好晒庆生自拍 天天播资讯
- 什么是执行力?执行力详情介绍
- 世界微动态丨常用计算机的外设有哪些?电脑外设产品什么品牌好?
- 2023年常州春节哪里有烟花?:世界即时
- 视点!高效Transformer、计算机视觉的总结与展望
- 华容道有哪些通关技巧?15数字华容道解法 -环球时讯
- 【网络防火墙】PVS的原理及应用_每日简讯
- KMP算法是什么?KMP算法详解_全球消息
- 【记录分享】Android常用应用市场和应用包名工作 每日资讯
- ios系统和安卓系统噪音计测评 哪个更好用?
- 精选!《霍格沃茨之遗》发售1个月倒计时 社区总监:等待是艰难的
- 恐怖逃生解谜游戏《恶娑海》Steam页面上线 2023年第四季度发售_当前滚动
- 鹅鸭杀否认腾讯收购 尚未计划登陆WeGames-天天热推荐
- CCTV6将首播刘亦菲版《花木兰》 尽显东方神韵 世界观热点
- 环球实时:HBO《最后生还者》角色设定改动 山姆的耳朵失聪了
- 今日播报!索尼宣布推出《原神》联动耳机 仅在日本限定发售
- 罗琳引LGBTQ+不满 《霍格沃茨之遗》喜提“反派”tag
- 《幻想三国志 天元异事录》现已在Steam平台免费推出
- 微软《极限竞速:地平线》系列多位人才出走 成立全新工作室
- 《流浪地球2》IMAX/CINITY海报:风格独特宏伟壮观:环球观热点
- 庵野秀明将客串漫改日剧《一刑的乌鸦》剧场版
- 米哈游希望在2030年推出世界级元宇宙产品 10亿人可生活其中
- pdg用什么打开?怎样将pdg文件转为pdf?
- macbook截屏快捷键是什么?macbook截屏快捷键的方法
- win7没有找到Vcomp100.dll?找到Vcomp100.dll的具体步骤
- DNF如何设置窗口?设置DNF窗口的步骤
- skype登陆不上怎么办?skype登陆不上处理方法步骤
- xp系统无法关机是什么原因?无法关机的两种解决办法
- 提示80072efd的错误代码是怎么回事?提示80072efd的错误代码解决方法
- 没下载完的文件如何导入迅雷?迅雷提示"临时文件读取错误"?
- Win8系统配置在哪里?打开Win8系统配置步骤
- 电脑总是弹出Windows安全警告?教大家关闭安全警告的方法
- 初始化网卡信息失败导致不能上网怎么办?初始化网卡信息失败导致不能上网操作过程
- 一键还原精灵怎么彻底删除?一键还原精灵彻底删除两种方法及注意事项
- 会声会影x5序列号及激活码分享 会声会影x5安装步骤
- mom.exe是什么进程?mom.exe文件放在哪?
- 文件夹禁止写入怎么设置?文件夹中不可以存放什么?
- cdr文件打开很慢是什么原因导致的?cdr文件打开很慢的解决方法
- e站需要挂什么加速器 ehviewer网络错误怎么办?
- 《龙珠Z:卡卡罗特》巴达克DLC新预告 1月13日推出|每日热文
- 任天堂日服试玩同乐会 《你裁我剪斯尼帕》免费游玩
- 今日热讯:《死亡岛2》给武器加耐久度 是让玩家不断换新武器
- 《中国奇谭》B站播放量破5000万 哪个角色是你最爱?_当前播报
- 黑客推出假冒《宝可梦》NFT卡牌游戏:内含病毒
- 焦点精选!美的集团方洪波:让美的成为真正意义上的全球科技企业
- 多地宣布第一波感染高峰已过,新冠监测体系如何重建?_天天播资讯
- 电脑证书错误怎么办?四个步骤详细教程
- 如何一键ghost8.3硬盘版备份硬盘?一键ghost8.3硬盘版备份方法
- qq应用管理器在哪?qq应用管理器怎么添加应用?
- 苹果AR头显春季发:原型机在测试了!:全球热文
- 三星Galaxy S23系列开始预热 2月2日发布
- 环球即时:3天内获3万辆汽车订单?特斯拉回应不予置评
- 电脑显卡正常温度范围是多少?显卡正常温度介绍
- LOL提示登录失败请重试是怎么回事?原因分析及解决方法
- 电脑开机总是弹出360热点新闻怎么办?360热点资讯怎么彻底删除?
- 思科tftp服务器如何设置根目录?思科tftp服务器命令介绍
- QQ缓存文件是什么?QQ缓存文件应该怎么清除?
- 浏览器提示无法定位序数459怎么办?教大家解决方法
- 提示此网页包含的内容将不使用安全的https连接传送怎么解决?
- bios电池在哪?找寻bios电池在哪的方法步骤
- 产的了却买不到的布洛芬,到底是不是个投资新机会? | MIR DATABANK|新要闻
- 磁盘碎片整理有什么用?介绍磁盘碎片整理的作用
- 打开方式不对导致文件打不开怎么办?还原文件默认打开方式步骤
- coreldraw复制快捷键是什么?cdr怎么等距离连续复制?