Python获取本机所有网卡ip、掩码和广播地址实例代码

  

本文主要研究的是使用Python获取本机所有网卡ip、掩码和广播地址,分享了相关的实例代码,具体介绍如下。

  

搜了一天,竟然没找到一段合适的代码来获取机器中所有网卡的ip,掩码和广播地址,大部分都是用插座,但是插座通常返回的要不就是内网地址,要不就是公网地址,不能够找到所有地址,真的太忧桑了,决定自己通过ifconfig或ipconfig的返回信息,一步步地过滤了。这次的代码主要用到了正则表达式和子流程模块,而且为了兼容所有平台(赢,linux和mac),也用到了平台来判断系统类型,不说太多,代码如下:

        导入子流程   进口再保险   进口平台         def find_all_ip(平台):   ipstr=' ([0 - 9] {1,3} \) {3} [0 - 9] {1,3}’   如果平台====按锒摹被蚱教ā癓inux”:   ipconfig_process=子流程。Popen (“ifconfig stdout=subprocess.PIPE)   输出=ipconfig_process.stdout.read ()   ip_pattern=re.compile ((inet % s)的% ipstr)   如果平台==癓inux”:   ip_pattern=re.compile ((inet addr: % s)的% ipstr)   模式=re.compile (ipstr)   iplist=[]   在re.finditer ipaddr (ip_pattern str(输出)):   ip=pattern.search (ipaddr.group ())   如果ip.group () !=?27.0.0.1”:   iplist.append (ip.group ())   返回iplist   elif平台==癢indows”:   ipconfig_process=子流程。Popen (“ipconfig stdout=subprocess.PIPE)   输出=ipconfig_process.stdout.read ()   ip_pattern=re.compile (“IPv4地址(\)*:% s“% ipstr)   模式=re.compile (ipstr)   iplist=[]   在re.finditer ipaddr (ip_pattern str(输出)):   ip=pattern.search (ipaddr.group ())   如果ip.group () !=?27.0.0.1”:   iplist.append (ip.group ())   返回iplist         def find_all_mask(平台):   ipstr=' ([0 - 9] {1,3} \) {3} [0 - 9] {1,3}’   maskstr=' 0 x ([0-9a-f] {8}) '   如果平台====按锒摹被蚱教ā癓inux”:   ipconfig_process=子流程。Popen (“ifconfig stdout=subprocess.PIPE)   输出=ipconfig_process.stdout.read ()   mask_pattern=re.compile((子网掩码% s)的% maskstr)   模式=re.compile (maskstr)   如果平台==癓inux”:   mask_pattern=re.compile (r 'Mask: % s % ipstr)   模式=re.compile (ipstr)   masklist=[]   在mask_pattern.finditer maskaddr (str(输出)):   掩码=pattern.search (maskaddr.group ())   如果mask.group () !=0 xff000000和mask.group () !=?55.0.0.0”:   masklist.append (mask.group ())   返回masklist   elif平台==癢indows”:   ipconfig_process=子流程。Popen (“ipconfig stdout=subprocess.PIPE)   输出=ipconfig_process.stdout.read ()   mask_pattern=re.compile (r”子网掩码(\)*:% s“% ipstr)   模式=re.compile (ipstr)   masklist=[]   在mask_pattern.finditer maskaddr (str(输出)):   掩码=pattern.search (maskaddr.group ())   如果mask.group () !=?55.0.0.0”:   masklist.append (mask.group ())   返回masklist         def get_broad_addr (ipstr maskstr):   iptokens=地图(int, ipstr.split (“。”)   masktokens=地图(int, maskstr.split (“。”)   broadlist=[]   因为我在范围(len (iptokens)):   ip=iptokens[我]   掩码=masktokens[我]   广泛=ip和;面具|(~面具,255)   broadlist.append(广泛)   返回“。”。加入(地图(str, broadlist))         def find_all_broad(平台):   ipstr=' ([0 - 9] {1,3} \) {3} [0 - 9] {1,3}’   如果平台====按锒摹被蚱教ā癓inux”:   ipconfig_process=子流程。Popen (“ifconfig stdout=subprocess.PIPE)   输出=(ipconfig_process.stdout.read ())   broad_pattern=re.compile ((% s)播出的% ipstr)   如果平台==癓inux”:   broad_pattern=re.compile (r 'Bcast: % s % ipstr)   模式=re.compile (ipstr)   broadlist=[]   在broad_pattern.finditer broadaddr (str(输出)):   广义=pattern.search (broadaddr.group ())   broadlist.append (broad.group ())   返回broadlist   elif平台==癢indows”:   iplist=find_all_ip(平台)   masklist=find_all_mask(平台)   broadlist=[]   因为我在范围(len (iplist)):   broadlist。追加(get_broad_addr (iplist[我],masklist[我]))   返回broadlist         系统=platform.system ()   print (find_all_ip(系统)   print (find_all_mask(系统)   print (find_all_broad(系统)      

  

以上就是本文关于Python获取本机所有网卡ip、掩码和广播地址实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python获取本机所有网卡ip、掩码和广播地址实例代码