博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python获取网卡信息(名称、MAC、IP、网关等)
阅读量:6329 次
发布时间:2019-06-22

本文共 2605 字,大约阅读时间需要 8 分钟。

    “人生苦短,我用Python”。Python的高效有一部分是跟它丰富的模块分不开的。Python有很多第三方模块可以帮助我们完成一些事情,减少开发时间。

Python pypi库中一个模块名字叫“netifaces”,使用C语言写的一个第三方模块。可以:

    1.获取本机的所有网关

    2.获取本机所有的接口Interface(网卡NIC)

    3.获取本机指定接口的详细信息,包括IP地址、子网掩码、广播地址、MAC地址等

不过遗憾的是这个模块的功能太有限以及会带出一些令人困惑的信息,例如Windows系统上的子网掩码可能不正确等。

PS:要想获取公网地址,可以使用很多种API,例如:

    # Use 3rd party web-sites to get your IP  

    # Please note that I do not recommend following curl/wget method due to security reasons. You have been warned:    
    curl ifconfig.me    
    curl icanhazip.com    
    curl ipecho.net/plain    
    curl ifconfig.co    
    curl http://ip.chinaz.com/getip.aspx

运行截图如下:

代码请移步到GitHub:

代码如下:

#!/usr/bin/python# encoding: utf-8# -*- coding: utf8 -*-"""Created by PyCharm.File:               LinuxBashShellScriptForOps:getNetworkStatus.pyUser:               GuodongCreate Date:        2016/11/2Create Time:        16:20show Windows or Linux network Nic status, such as MAC address, Gateway, IP address, etc# python getNetworkStatus.pyRouting Gateway:               10.6.28.254Routing NIC Name:              eth0Routing NIC MAC Address:       06:7f:12:00:00:15Routing IP Address:            10.6.28.28Routing IP Netmask:            255.255.255.0 """import osimport systry:    import netifacesexcept ImportError:    try:        command_to_execute = "pip install netifaces || easy_install netifaces"        os.system(command_to_execute)    except OSError:        print "Can NOT install netifaces, Aborted!"        sys.exit(1)    import netifacesroutingGateway = netifaces.gateways()['default'][netifaces.AF_INET][0]routingNicName = netifaces.gateways()['default'][netifaces.AF_INET][1]for interface in netifaces.interfaces():    if interface == routingNicName:        # print netifaces.ifaddresses(interface)        routingNicMacAddr = netifaces.ifaddresses(interface)[netifaces.AF_LINK][0]['addr']        try:            routingIPAddr = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr']            # TODO(Guodong Ding) Note: On Windows, netmask maybe give a wrong result in 'netifaces' module.            routingIPNetmask = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['netmask']        except KeyError:            passdisplay_format = '%-30s %-20s'print display_format % ("Routing Gateway:", routingGateway)print display_format % ("Routing NIC Name:", routingNicName)print display_format % ("Routing NIC MAC Address:", routingNicMacAddr)print display_format % ("Routing IP Address:", routingIPAddr)print display_format % ("Routing IP Netmask:", routingIPNetmask)

最后:不要重复制造轮子。重复制造轮子对自己而言,虽然制造的过程是学习巩固的过程,但重复制造轮子对别人没有好处,人生苦短,别重复制造轮子,除非你制造的足够好。

tag:python获取MAC地址,python获取网关地址,python获取IP地址

--end--

转载地址:http://fqyoa.baihongyu.com/

你可能感兴趣的文章
markdown编辑
查看>>
ASCII 在线转换器
查看>>
Linux内核同步:RCU
查看>>
Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
查看>>
Java设计模式之五大创建型模式(附实例和详解)
查看>>
60 Permutation Sequence
查看>>
主流的RPC框架有哪些
查看>>
Hive学习之路 (七)Hive的DDL操作
查看>>
[转]mysql使用关键字作为列名的处理方式
查看>>
awesome go library 库,推荐使用的golang库
查看>>
树形展示形式的论坛
查看>>
jdbcTemplate 调用存储过程。 入参 array 返回 cursor
查看>>
C++中的stack类、QT中的QStack类
查看>>
Linux常用基本命令[cp]
查看>>
CSS 相对|绝对(relative/absolute)定位系列(一)
查看>>
关于 Nginx 配置 WebSocket 400 问题
查看>>
Glide和Govendor安装和使用
查看>>
Java全角、半角字符的关系以及转换
查看>>
Dubbo和Zookeeper
查看>>
前端项目课程3 jquery1.8.3到1.11.1有了哪些新改变
查看>>