【发布时间】:2016-10-13 14:22:07
【问题描述】:
我想过滤 IPv4 ips 并获取属于我的 LAN(而不是我的 VMware 网络)的一个。 我编码了这个东西:
print re.findall(r'[0-255]\.[0-255]\.[0-255]\.[0-255]', str([y for y in filter(lambda x: 'IPv4 Address' in x, os.popen("ipconfig").readlines())]))
这部分:
str([y for y in filter(lambda x: 'IPv4 Address' in x, os.popen("ipconfig").readlines())])
它首先获得我拥有的 ips(至少它们所在的行。) 例如,就这一行,会给我:
[' IPv4 地址。 . . . . . . . . . . : 192.168.231.1\n', ' IPv4 地址。 . . . . . . . . . . : 192.168.233.1\n', ' IPv4 地址。 . . . . . . . . . . : 10.100.102.8\n']
(前两个是VMware的)
当我执行正则表达式时,它不起作用。 它的目的是只给我我给它的字符串中的 ips。
如何过滤唯一的 LAN ip(在本例中为“10.100.102.8”。)并将其插入字符串?
【问题讨论】:
-
局域网中的所有地址都应以
10.开头,因此请尝试10.\d{1,3}.\d{1,3}.\d{1,3}或不使用正则表达式lambda x: 'IPv4 Address. . . . . . . . . . . : 10.' in x -
顺便说一句:标准模块ipaddress
-
@furas 你确定吗?因为在这里:en.wikipedia.org/wiki/Private_network 我看到不止一种 ip 类型。其实是三个!另外两个是从 192\171 开始的。所以....
-
你只问如何识别
10.100.102.8。如果您想确定,则必须按照@Goufalite 所说的那样检查网络适配器。
标签: python