python的netiface模块使用demo
python使用netifaces模块demo,用来获取网卡以及网卡上相关信息,包括IP,网关等。下面的代码也可以下载。#!/usr/bin/python# -*- coding: utf-8 -*-from __future__ import print_functionimport netifacesdef netifaces_demo():print('netifaces demo'.cen
·
python使用netifaces模块demo,用来获取网卡以及网卡上相关信息,包括IP,网关等。下面的代码也可以下载。
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import print_function
import netifaces
def netifaces_demo():
print('netifaces demo'.center(140, '*'))
print('family id name map'.center(140, '-'))
for k,v in netifaces.address_families.items():
print("id = {0}, name = {1}".format(k, v))
print('interface info'.center(140, '-'))
for nic_name in netifaces.interfaces():
ifaddr = netifaces.ifaddresses(nic_name)
for family_id, net_infos in ifaddr.items():
print("nic_name: {} family_id: {} family_name: {} ".format(nic_name, family_id, netifaces.address_families[family_id]), end="")
for e in net_infos:
for k,v in e.items():
print("%s: %s " % (k, v), end="")
print("")
# 输出默认的网关
print('gateway info'.center(140, '-'))
for l in netifaces.gateways().keys():
if isinstance(l, str) and l.startswith('default'):
print("gateways: default, ", end="")
for k, v in netifaces.gateways()['default'].items():
print("family_id: %d, family_name: %s, gateway_ip: %s, nic_name: %s" % (k, netifaces.address_families[k], v[0], v[1]))
break
for family_id, infos in netifaces.gateways().items():
if isinstance(family_id, str) and family_id == 'default':
continue
for l in infos:
print("family_id: %d, family_name: %s, gateway_ip: %s, nic_name: %s, is_default: ." % (family_id, netifaces.address_families[family_id], l[0], l[1]))
def get_ipv4_eth_info(eth_name):
'''
[{'broadcast': u'192.168.0.255', 'netmask': u'255.255.255.0', 'addr': u'192.168.0.108'}]
'''
ifaddr = netifaces.ifaddresses(eth_name)
if netifaces.AF_INET not in ifaddr.keys():
return None
return ifaddr[netifaces.AF_INET]
def get_ipv4_default_gateway():
'''
(u'192.168.0.1', u'en0')
'''
gateways = netifaces.gateways()
flag = False
for k in gateways.keys():
if isinstance(k, str) and k == 'default':
flag = True
break
if flag is False:
return None
infos = gateways['default']
if netifaces.AF_INET not in infos.keys():
return None
return gateways['default'][netifaces.AF_INET]
def get_ipv4_gateway():
gateways = netifaces.gateways()
flag = False
for k in gateways.keys():
if k == netifaces.AF_INET:
flag = True
break
if flag is False:
return None
return gateways[netifaces.AF_INET]
def get_ethname_by_ip(ip):
for nic_name in netifaces.interfaces():
ifaddr = netifaces.ifaddresses(nic_name)
for family_id, net_infos in ifaddr.items():
for e in net_infos:
if 'addr' in e.keys() and e['addr'] == ip:
return nic_name
return None
def main():
netifaces_demo()
print('interface test'.center(140, '*'))
print(get_ipv4_eth_info('en0'))
print(get_ipv4_default_gateway())
print(get_ipv4_gateway())
print(get_ethname_by_ip('127.0.0.1'))
print(get_ipv4_eth_info(get_ethname_by_ip('127.0.0.1')))
if __name__ == '__main__':
main()
更多推荐
所有评论(0)