当前位置:

首页 > 软件教程 > Python获取网卡详细信息方法

Python获取网卡详细信息方法

#前言正常情况下,如果想要查看电脑的网卡IP地址或是MAC地址,直接通过界面找到网卡进行查看就有了,亦或是通过命令如linux的ifconfig得到IP等信息,那么本节教大家如何通过python的方式获取网卡的IP/MAC信息。#测试环境及关键代码解释##测试环境###系统:代码语言:txt复制Ubuntu16.04.6LTSWindows10x64###开发工具:代码语言:txt复制pycharm专业版备注:专业版支持本地远程linux调试。#模块介绍及演示本次只需要用到3个模块就搞定

用Python获取计算机网卡信息

#前言

正常情况下,如果想要查看电脑的网卡IP地址或是MAC地址,直接通过界面找到网卡进行查看就有了,亦或是通过命令如linux的ifconfig得到IP等信息,那么本节教大家如何通过python的方式获取网卡的IP/MAC信息。

#测试环境及关键代码解释

##测试环境

###系统:

代码语言:txt复制
Ubuntu 16.04.6 LTSWindows 10 x64

###开发工具:

代码语言:txt复制
pycharm 专业版备注:专业版支持本地远程linux调试。

#模块介绍及演示

本次只需要用到3个模块就搞定,但也是挺费劲的咯。

netifaces //需要安装,主要用于获取网卡接口IP/MAC等信息;winreg //内置模块,主要用于Windows系统通过注册表获取网卡接口键值;platform //内置模块,主要用于判断系统类型:如Widows、Linux、MacOS等;

##platform模块使用示例

Linux系统:

代码语言:txt复制
import platformplatform.system()'Linux'     #返回结果

Windows系统:

代码语言:txt复制
import platformplatform.system()'Windows'     #返回结果

##netifaces模块使用示例

外置模块,安装方式请参考网上,此处忽略(很简单)。

用处:用于收集网络接口等信息(IP/地址/网关)。

netiface模块定了3个函数:

代码语言:txt复制
def gateways(*args, **kwargs):      #获取网关    代码块def ifaddresses(*args, **kwargs):   #获取IP信息    代码块def interfaces(*args, **kwargs):    #获取接口ID    代码块

先看下地址族:

代码语言:txt复制
#!/usr/bin/env python3#-*- coding:UTF-8 -*-#欢迎关注微信公众号:点滴技术#以下在Linux环境下演示from netifacesimport pprintpp = pprint.PrettyPrinter(indent=4)     #这里使用pprint输出会更直观pp.pprint(netifaces.address_families)#返回结果:{   0: 'AF_UNSPEC',    1: 'AF_FILE',    2: 'AF_INET',#ipv4地址    3: 'AF_AX25',    4: 'AF_IPX',    5: 'AF_APPLETALK',    6: 'AF_NETROM',    7: 'AF_BRIDGE',    8: 'AF_ATMPVC',    9: 'AF_X25',    10: 'AF_INET6',#ipv6地址    11: 'AF_ROSE',    12: 'AF_DECnet',    13: 'AF_NETBEUI',    14: 'AF_SECURITY',    15: 'AF_KEY',    16: 'AF_NETLINK',    17: 'AF_PACKET',    #ipv4的MAC地址    18: 'AF_ASH',    19: 'AF_ECONET',    20: 'AF_ATMSVC',    22: 'AF_SNA',    23: 'AF_IRDA',    24: 'AF_PPPOX',    25: 'AF_WANPIPE',    31: 'AF_BLUETOOTH'}    #这里大家重点关注下:AF_NET、AF_NET6#其他的大家自己去研究下

###Linux环境下如何获取网卡口的信息

代码语言:txt复制
#!/usr/bin/env python3#-*- coding:UTF-8 -*-#欢迎关注微信公众号:点滴技术import netifacesimport pprintpp = pprint.PrettyPrinter(indent=4)netifaces.interfaces()  ['lo', 'ens32']         #返回结果,ubuntu系统网卡IDpp.pprint(netifaces.ifaddresses('ens32'))#返回结果,是一个字典,字典中又嵌套列表,所以切片的时候要注意{   2: [   {   'addr': '192.168.0.253',               'broadcast': '192.168.0.255',               'netmask': '255.255.255.0'}],    10: [   {   'addr': 'fe80::20c:29ff:fe5d:2f55%ens32',                'netmask': 'ffff:ffff:ffff:ffff::/64'}],    17: [{'addr': '00:0c:29:5d:2f:55', 'broadcast': 'ff:ff:ff:ff:ff:ff'}]}netifaces.ifaddresses('ens32')[netifaces.AF_INET][0]['addr']'192.168.0.253'     #返回结果,获取到IPv4地址netifaces.ifaddresses('ens32')[netifaces.AF_PACKET][0]['addr']'00:0c:29:5d:2f:55'     #返回结果,获取到IPv4的MAC地址netifaces.ifaddresses('ens32')[netifaces.AF_INET6][0]['addr']'fe80::20c:29ff:fe5d:2f55%ens32'        #返回结果,获取到IPv6地址

###Windows环境下如何获取网卡口的信息

说明:windows取值相比Linux复杂多了,不能直接根据接口获取ip信息,需要先找到一串唯一的键值,然后才能依据它获取到接口IP信息,这里我先给出示例,免得大家看了一头雾水:

我的无线网卡信息:

无线网卡名称:WLAN 注册表上对应的键值:{CD94297B-D746-4494-91F7-3E40C091A0FC} //python需要知道这个

注册表需要用到了【winreg】模块,咱们还是先简单聊下Windows的注册表结构吧。

代码语言:txt复制
        >-----HKEY_CLASSES_ROOT        >-----HKEY_CURRENT_USER注册表   >-----HKEY_LOCAL_MACHINE        >-----HKEY_USERS        >-----HKEY_CURRENT_CONFIG大体分为:主键--子键--键值本次用到的函数:winreg.ConnectRegistry(computer_name, key):    连接注册表,computer_name=None表示本地计算机,否则用r"\\computername"表示远程计算机,key为键的链接。    winreg.OpenKey(key, sub_key, reserved=0, access=KEY_READ):    打开指定的键,key已经打开的键,sub_key要打开的键。    winreg.QueryValueEx(key,value_name ):    检索注册表项关联的指定值名称的类型和数据。

在Windows环境如何获取接口信息:

代码语言:txt复制
#以下在Windows环境下import netifacesimport pprintpp = pprint.PrettyPrinter(indent=4)pp.pprint(netifaces.interfaces())#返回结果:是个列表,都是一串子键... 这一 一对应网卡来的[   '{90788744-5655-4A9E-ADB6-A97CAE0F3B3F}',    '{02685473-BCE5-4E19-AC64-0388FA81C13F}',    '{5BBD6405-7C2E-4A78-8A09-31E03FAA3B75}',    '{95FDA148-CA04-4926-87CD-FC0DC38FF89C}',    '{D87FBBE0-11C0-49D1-A8CE-52DFC195B1B4}',    '{E31B9D7C-6E73-4773-B564-1038BDB0EDAD}',    '{A7584008-7824-4760-B2E0-1D0F483FD64E}',    '{CD94297B-D746-4494-91F7-3E40C091A0FC}',   #剧透,这个就是无线网卡WLAN的唯一子键    '{652C7833-4B8D-400F-A72F-F7C89C30FD03}',    '{991AF727-67ED-11E9-B14B-806E6F6E6963}']    #请先记住我的无线网卡WLAN的键是: {CD94297B-D746-4494-91F7-3E40C091A0FC} #后面会介绍怎么获取;#先看下获取ipv4相关的信息:pp.pprint(netifaces.ifaddresses('{CD94297B-D746-4494-91F7-3E40C091A0FC}')[netifaces.AF_INET]#返回结果[   {   'addr': '172.20.18.37',        'broadcast': '172.20.18.255',        'netmask': '255.255.255.0'}]        #获取ipv4地址       pp.pprint(netifaces.ifaddresses('{CD94297B-D746-4494-91F7-3E40C091A0FC}')[netifaces.AF_INET][0]['addr'])'172.20.18.37'  #返回结果

#完整代码

文件1:win_get_key.py

说明:windows系统上运行使用

代码语言:txt复制
#!/usr/bin/env python3#-*- coding:UTF-8 -*-#欢迎关注微信公众号:点滴技术from netifaces import interfacesimport winreg as wr#定义获取Windows系统网卡接口的在注册表的键值的函数def get_key(ifname):    #获取所有网络接口卡的键值    id = interfaces()    #存放网卡键值与键值名称的字典    key_name = {}    try:        #建立链接注册表,"HKEY_LOCAL_MACHINE",None表示本地计算机        reg = wr.ConnectRegistry(None,wr.HKEY_LOCAL_MACHINE)        # 打开r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}',固定的        reg_key = wr.OpenKey(reg , r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}')    except :        return ('路径出错或者其他问题,请仔细检查')    for i in id:        try:            #尝试读取每一个网卡键值下对应的Name            reg_subkey = wr.OpenKey(reg_key , i + r'\Connection')            #如果存在Name,写入key_name字典            key_name[wr.QueryValueEx(reg_subkey , 'Name')[0]] = i            # print(wr.QueryValueEx(reg_subkey , 'Name')[0])        except FileNotFoundError:            pass    # print('所有接口信息字典列表: ' + str(key_name) + '\n')    return key_name[ifname]if __name__ == '__main__':    print(get_key('WLAN'))

文件2:python_netifaces.py

说明:在Window和Linux系统上运行使用

代码语言:txt复制
#!/usr/bin/env python3#-*- coding:UTF-8 -*-#欢迎关注微信公众号:点滴技术from netifaces import  ifaddresses ,AF_INET , AF_INET6import platform#定义获取ipv4信息的函数def get_ip_address(ifname):    #判断系统是否为Linux    if platform.system() == "Linux":        try:            #返回ipv4地址信息            return ifaddresses(ifname)[AF_INET][0]['addr']        except ValueError:            return None    #判断是否为Windows系统    elif platform.system() == "Windows":        #调用函数get_key,获取到了网卡的键值        from Tools.win_get_key import get_key        key = get_key(ifname)        if not key:            return        else:            #返回ipv4地址信息            return ifaddresses(key)[AF_INET][0]['addr']    # 判断是否为Windows系统    elif platform.system() == 'MacOS':        pass    else:        print('您的系统本程序暂时不支持,目前只支持Linux、Windows、MacOS')#定义获取ipv6信息的函数,与上面函数大体一致,不备注def get_ipv6_address(ifname):    if platform.system() == "Linux":        try:         return ifaddresses(ifname)[AF_INET6][0]['addr']        except ValueError:            return None    elif platform.system() == "Windows":        from Tools.win_get_key import get_key        key = get_key(ifname)        if not key:            return        else:           return ifaddresses(key)[AF_INET6][0]['addr']    elif platform.system() == 'MacOS':        pass    else:        print('您的系统本程序暂时不支持,目前只支持Linux、Windows、MacOS')if __name__ == '__main__':    print('你的ipv4地址是:' + get_ip_address('WLAN'))    print('你的ipv6地址是:' + get_ipv6_address('WLAN'))    #Windows系统下返回的结果:    你的ipv4地址是:192.168.100.203    你的ipv6地址是:240e:64:5222:2000:5d68:304d:6133:ab45

Linux系统下返回结果:

代码语言:txt复制
...省略......代码省略(同上)...if __name__ == '__main__':    #切换到远程Linux环境下,修改如下:    print('你的ipv4地址是:' + get_ip_address('ens32'))    print('你的ipv6地址是:' + get_ipv6_address('ens32'))     #Linux系统下返回的结果       你的ipv4地址是:192.168.0.253    你的ipv6地址是:fe80::20c:29ff:fe5d:2f55%ens32

#碎碎语

本次篇幅有点多,我是采用分解方式进行讲解,希望对大家有用,而不是一把把脚本贴上来。

我写的每一篇文章,希望对于网络攻城狮来说,能够如何运用python更好的提高工作效率和运维,而不仅仅局限在传统的局域网、广域网等,技术再迭代更新,个人的技能思维更需要贴合时代,共同进步。

##官方参考链接:

代码语言:txt复制
netifaces模块:https://pypi.org/project/netifaces/winreg模块:https://docs.python.org/3/library/winreg.html#exception-changed

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
软件教程 Linux
相关文章 更多
AE基础教程:如何创建合成并制作关键帧动画
AE基础教程:如何创建合成并制作关键帧动画

本文指导After Effects新手完成从打开软件到制作简单动画的完整流程。内容涵盖新建合成、导入素材、添加关键帧及预览验证,适用于AE基础学习。读者可依据步骤快速完成首个可播放的动效项目。

电影剪辑实战:镜头组织、节奏控制与声音衔接技巧
电影剪辑实战:镜头组织、节奏控制与声音衔接技巧

本文详解电影剪辑核心流程,从素材整理、镜头空间组织到叙事节奏压缩,再到J-cut/L-cut声音衔接技巧。通过粗剪保逻辑、精剪压停顿、反应镜头缓冲及电平统一检查,帮助创作者打造空间清晰、情绪连贯且听感自然的成片。

转场剪辑实战指南:硬切、遮挡与运镜的精准选择与操作技巧
转场剪辑实战指南:硬切、遮挡与运镜的精准选择与操作技巧

本文详解硬切、遮挡转场和运镜转场的适用场景与操作逻辑。通过对比三种转场的核心区别,提供基于素材条件和叙事目的的判断标准,帮助剪辑师避免滥用特效,掌握自然衔接画面的实战技巧。

GitLab新手创建项目并推送第一次提交的操作指南
GitLab新手创建项目并推送第一次提交的操作指南

本文指导GitLab新手完成创建项目并推送第一次提交的最小闭环。涵盖远程项目创建、本地仓库初始化、添加远程地址及执行git push。重点说明HTTPS与SSH认证差异、分支名(master/main)核对及提交验证标准,确保远程仓库真正建立。

抖音拍摄剪辑教程:从竖屏运镜到卡点成片
抖音拍摄剪辑教程:从竖屏运镜到卡点成片

本教程针对抖音竖屏视频制作,涵盖拍摄前构思、稳定运镜、粗剪筛选、音乐卡点及导出检查全流程。重点在于拍摄时预留字幕空间、利用动作节点辅助剪辑,以及通过鼓点对齐画面。适用于新手快速完成第一条完整成片,强调素材质量与节奏自然,避免过度特效与版权风险。

饭圈舞台照修图:降噪、调色与人物突出技巧
饭圈舞台照修图:降噪、调色与人物突出技巧

针对饭圈舞台照光线乱、噪点多、背景抢眼的痛点,本文提供“保脸、控光、突出主体”的修图方案。核心步骤包括:利用Lightroom降噪面板处理高ISO颗粒,控制曝光避免高光死白或脸部死黑;通过压低背景色彩、提升人物亮度与对比度来修正舞台灯光导致的肤色偏差;最后通过裁剪去除杂乱元素,确保人物主体清晰且肤色自然。

Photoshop安装失败或启动异常:系统要求、安装流程与故障排查指南
Photoshop安装失败或启动异常:系统要求、安装流程与故障排查指南

本文提供Photoshop完整安装指南,涵盖Windows/macOS系统要求、Creative Cloud客户端部署及常见启动故障排查。通过安装前磁盘与账号检查、安装中网络监控、安装后功能测试三步法,解决安装中断、登录失败及启动卡顿问题,确保软件稳定可用。

创维电视通过U盘安装第三方软件完整教程:权限设置与故障排查
创维电视通过U盘安装第三方软件完整教程:权限设置与故障排查

本文提供创维电视通过U盘安装第三方APK的完整操作指南。核心步骤包括:准备格式化的U盘与正规APK文件,在酷开系统“应用管理”中找到安装入口,临时开启“允许安装未知来源应用”权限,以及安装后的功能测试与权限关闭。适用于解决电视无法识别U盘、提示解析失败或权限受限等问题,确保安装安全且不影响系统稳定。

Excel筛选大于指定数值:操作步骤与结果验证
Excel筛选大于指定数值:操作步骤与结果验证

本教程演示如何在Excel中筛选大于指定数值的数据。核心步骤包括:确保数据连续、选中表头、通过“开始→排序和筛选”开启筛选,并在“数字筛选”中选择“大于”输入阈值。筛选仅隐藏不符合条件的行,不删除数据。完成后需逐行验证可见数据是否均大于阈值,并可通过取消筛选恢复全部数据。

Creo零基础入门:新建零件与第一次拉伸建模完整指南
Creo零基础入门:新建零件与第一次拉伸建模完整指南

本教程指导Creo初学者完成首个拉伸实体建模。通过新建零件、选择mmns_part_solid模板、定义草绘平面及绘制封闭轮廓,生成三维实体。内容涵盖操作路径、参数设置及常见错误排查,帮助新手建立正确的建模逻辑与单位概念。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。