python之netifaces模块

发布时间:2019-09-08 09:10:08编辑:auto阅读(2393)

    #!/usr/bin/python
    # encoding: utf-8
    # -*- coding: utf8 -*-
    """
    Create Date:        2016/12/26
    Create Time:        17:53
    show Windows or Linux network Nic status, such as MAC address, Gateway, IP address, etc
    # python getNetworkStatus.py
    Routing Gateway:               10.0.0.1            
    Routing NIC Name:              enp3s0              
    Routing NIC MAC Address:       10:c3:7b:61:22:02   
    Routing IP Address:            10.0.0.194          
    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)
    windows执行的Routing NIC Name可能会出现C20B1496-F5CA-4670-A4FB-之类
    https://pypi.python.org/pypi/netifaces
    用法


关键字