一、前言
本文使用Python编程获得本机所有网络链接的ip地址,主要思路为:通过os模块调用cmd命令ipconfig,将返回的结果
保存,然后使用re模块的正则表达式从结果中获得所有网络链接的ip地址,保存至字典中,最后打印。要求每个ip地
址必须具有相应的网络链接名说明,则从字符串‘IPv4地址’所在行的前几行中开始查找字符串‘适配器’的所在行文本
二、cmd命令ipconfig的返回值
下图为ipconfig的返回内容,可得到若要找到ip地址,则先找到字符串‘IPv4地址’所在行,然后利用正则表达式查找ip地
址,保存作为值,再从之前的几行中查找字符串‘适配器’的所在行文本,将该文本作为键。最后将所有结果保存为字
典。同理,由该思路也可获得所有网络连接的子网掩码、默认网关。运行环境:Python2.7.9
三、本机网络链接
先看看我的电脑中的所有网络链接如下,共有3个网络链接
四、代码
import re, os
def get_ipconfig_ip():
match_ip_dict = {}
ipconfig_result_list = os.popen('ipconfig').readlines() #执行cmd命令ipconfig,并将结果存于ipconfig_result_list
for i in range(0, len(ipconfig_result_list)): #逐行查找
if re.search(r'IPv4 地址' , ipconfig_result_list[i] ) != None:
match_ip = re.search(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', ipconfig_result_list[i]).group(0) #由正则表达式获取ip地址
for j in range(3,7):
if re.search(r"适配器" , ipconfig_result_list[i - j] ) != None:
match_ip_dict[ipconfig_result_list[i - j]] = match_ip
return match_ip_dict
if __name__ == '__main__': #主程序入口
ip_dict = get_ipconfig_ip() #返回字典ip_dict保存ip地址信息
for i in ip_dict:
print('{} {}'.format(i[0:-1], ip_dict[i])) #字符串format函数,其中i[0:-1]除去键的最后'\n'
五、运行结果