适合网络攻城狮学习的Python——正则表达式在实战中的使用

Posted 新网工李白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适合网络攻城狮学习的Python——正则表达式在实战中的使用相关的知识,希望对你有一定的参考价值。

📢身为新时代的网络工程师,传统的路由交换已经满足不了日常。NetDevOps要求网络工程师让编程和自动化成为日常的口袋技能。网络工程师们让我们偷偷学python,然后经验所有人!🤪
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢未来很长,值得我们全力奔赴更美好美好的生活✨
📢本文主要写python中正则表达式在实战中的使用。✊

1️⃣背景

  • 练习python中的正则表达式
  • Linux中用命令ifconfig显示出来的网卡的信息太多得不到关键信息

2️⃣目的

用python脚本抓取linux中网卡ens33的关键信息并清楚得展示出来

ifconfig查看网卡信息
在这里插入图片描述

3️⃣python脚本

import re
import os

# 得到具体网卡的信息,保存在ifconfig_中
ifconfig_result = os.popen('ifconfig ' + 'ens33').read()

# 正则表达式查找ip,掩码,广播和MAC地址
ipv4_add = re.findall('inet\\s+(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})', ifconfig_result)[0]
netmask = re.findall('netmask\\s+(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})', ifconfig_result)[0]
broadcast = re.findall('broadcast\\s+(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})', ifconfig_result)[0]
mac_addr = re.findall('ether\\s+([a-z0-9]{2}:[a-z0-9]{2}:[a-z0-9]{2}:[a-z0-9]{2}:[a-z0-9]{2}:[a-z0-9]{2})', ifconfig_result)[0]

# 格式化字符串
format_string = '{0:10}:{1}'

print(format_string.format('ipv4_add', ipv4_add))
print(format_string.format('netmask', netmask))
print(format_string.format('broadcast', broadcast))
print(format_string.format('mac_addr', mac_addr))

# 产生网关的IP地址
net_addr_section = ipv4_add[0:10]
ipv4_gw = net_addr_section + '1'

# 打印网关的IP地址
print('\\n我们假设网关IP地址的最后一位为1,因此网关IP地址为:' + ipv4_gw + '\\n')

ping_result = os.popen('ping ' + ipv4_gw + ' -c 1').read()

re_ping_result = re.findall('1\\sreceived', ping_result)

if re_ping_result:
    print('网关可达!')
else:
    print('网关不可达!')

4️⃣执行脚本

在这里插入图片描述
是不是很清楚啊,点赞 👍 收藏⭐拿去用吧✨

以上是关于适合网络攻城狮学习的Python——正则表达式在实战中的使用的主要内容,如果未能解决你的问题,请参考以下文章

适合网络攻城狮学习的Python——基本语法(字典)

适合网络攻城狮学习的Python——基础语法(列表)

适合网络攻城狮学习的Python——基本语法(整数浮点数)

致敬嵌入式攻城狮第2期活动预热征文学习安排

攻城狮学习时间~依赖注入设计模式

前端攻城狮的进击路线