python之netifaces模块

2023-01-31 05:01:58 python 模块 netifaces
#!/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
用法


相关文章