设为首页收藏本站

IT联盟

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1217|回复: 3

[学习笔记] python实现centos7收集网卡信息

[复制链接]

232

主题

242

帖子

3603

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3603

管理员最佳新人活跃会员热心会员推广达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2016-12-1 16:27:07 | 显示全部楼层 |阅读模式
Python通过正则实现网卡名、IP地址、MAC地址收集。
[Python] 纯文本查看 复制代码
#!/usr/bin/env python
# coding=utf-8

import re
from subprocess import Popen, PIPE

def getIfconfig():
    p = Popen(['ifconfig'], stdout=PIPE)
    data = p.stdout.read().decode().split('\n\n')
    return [i for i in data if i and not i.startswith('lo')]

def parseIfconfig(data):
    re_devname = re.compile(r'^(eth|em|lo|bond)[\d:]+', re.M)
    re_mac = re.compile(r'ether ([0-9a-f:]{17})', re.M)
    re_ip = re.compile(r'inet ([\d\.]{7,15})', re.M)
    devname = re_devname.search(data)
    if devname: 
        devname = devname.group()
        mac = re_mac.search(data)
        if mac:
            mac = mac.group(1)
        else:
            mac = ''
        ip = re_ip.findall(data)
        if ip: 
            ip = ip[0]
        else:
            ip = ''
    else:
        return
    return {devname: [ip, mac]}

if __name__ == '__main__':
    dic = {}
    data = getIfconfig()
    for i in data:
        if parseIfconfig(i):
            dic.update(parseIfconfig(i))
    print(dic)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|IT技术联盟论坛 ( 京ICP备15062632  点击这里给我发消息

GMT+8, 2019-2-21 16:48 , Processed in 0.081435 second(s), 29 queries .

Powered by Discuz! X3.2 Licensed Designed By

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表