为了账号安全,请及时绑定邮箱和手机立即绑定

Python获取网卡信息(名称、MAC、IP、网关等)

标签:
Python


    “人生苦短,我用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

运行截图如下:

image

image

代码请移步到GitHub:https://github.com/DingGuodong/LinuxBashShellScriptForOps/blob/master/projects/WindowsSystemOps/Network/getNetworkStatus.py

代码如下:

#!/usr/bin/python

# encoding: utf-8

# -*- coding: utf8 -*-

"""

Created by PyCharm.

File:               LinuxBashShellScriptForOps:getNetworkStatus.py

User:               Guodong

Create Date:        2016/11/2

Create Time:        16:20

show Windows or Linux network Nic status, such as MAC address, Gateway, IP address, etc

# python getNetworkStatus.py

Routing Gateway:               10.6.28.254

Routing NIC Name:              eth0

Routing NIC MAC Address:       06:7f:12:00:00:15

Routing IP Address:            10.6.28.28

Routing IP Netmask:            255.255.255.0

 """

import os

import sys

try:

    import netifaces

except 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 netifaces

routingGateway = 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:

            pass

display_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--

©著作权归作者所有:来自51CTO博客作者urey_pp的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消