相关疑难解决方法(0)

从IP字符串转换为整数,在Python中向后转换

我的脚本有一点问题,我需要将表单'xxx.xxx.xxx.xxx'中的ip转换为整数表示,然后从此表单返回.

def iptoint(ip):
    return int(socket.inet_aton(ip).encode('hex'),16)

def inttoip(ip):
    return socket.inet_ntoa(hex(ip)[2:].decode('hex'))


In [65]: inttoip(iptoint('192.168.1.1'))
Out[65]: '192.168.1.1'

In [66]: inttoip(iptoint('4.1.75.131'))
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)

/home/thc/<ipython console> in <module>()

/home/thc/<ipython console> in inttoip(ip)

error: packed IP wrong length for inet_ntoa`
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

python networking ip-address

43
推荐指数
8
解决办法
6万
查看次数

检查两个CIDR地址是否相交?

给定两个CIDR地址为192.168.2.0/14和192.168.2.0/32

如何在"python2.6"中检查两个ip地址是否重叠?

我已通过netaddr,它允许检查192.168.2.0是否在CIDR地址192.168.2.0/14中

from netaddr import IPNetwork, IPAddress
bool = IPAddress("192.168.2.0") in IPNetwork("192.168.2.0/14"):
Run Code Online (Sandbox Code Playgroud)

但是如何检查两个CIDR地址?

我找到了一个引用:: 如何在python中检查ip是否在网络中

python ip-address cidr

13
推荐指数
3
解决办法
1万
查看次数

Python - ip < - >子网匹配?

可能重复:
如何在python中检查ip是否在网络中

在python中将子网与ip地址匹配的简单方法是什么,如果ip地址在子网中我可以选择它?

提前致谢.

python ip subnet

10
推荐指数
1
解决办法
1万
查看次数

检查用户的IP地址是否在IP范围内

在我的 Python 应用程序中,我有一个 IP 地址字符串数组,如下所示:

[
    "50.28.85.81-140", // Matches any IP address that matches the first 3 octets, and has its final octet somewhere between 81 and 140
    "26.83.152.12-194" // Same idea: 26.83.152.12 would match, 26.83.152.120 would match, 26.83.152.195 would not match
]
Run Code Online (Sandbox Code Playgroud)

我安装了netaddr,虽然文档看起来很棒,但我无法理解它。这一定非常简单 - 如何检查给定的 IP 地址是否与这些范围之一匹配?不需要netaddr特别使用 - 任何简单的 Python 解决方案都可以。

python compare ip-address

5
推荐指数
1
解决办法
3357
查看次数

Pandas 检查 IP 地址属于哪个子网

我有一个包含用户及其 IP 地址的 pandas 数据框:

users_df = pd.DataFrame({'id': [1,2,3],
                         'ip': ['96.255.18.236','105.49.228.135','104.236.210.234']})

   id               ip
0   1    96.255.18.236
1   2   105.49.228.135
2   3  104.236.210.234
Run Code Online (Sandbox Code Playgroud)

以及一个包含网络范围和相应地理名称 ID 的单独数据框:

geonames_df = pd.DataFrame({'network': ['96.255.18.0/24','105.49.224.0/19','104.236.128.0/17'],
                            'geoname': ['4360369.0','192950.0','5391959.0']})

     geoname           network
0  4360369.0    96.255.18.0/24
1   192950.0   105.49.224.0/19
2  5391959.0  104.236.128.0/17
Run Code Online (Sandbox Code Playgroud)

对于每个用户,我需要根据所有网络检查他们的 IP,并提取相应的地理名称并将其添加到users_df. 我想要这个作为输出:

   id               ip   geonames
0   1    96.255.18.236  4360369.0
1   2   105.49.228.135   192950.0
2   3  104.236.210.234  5391959.0
Run Code Online (Sandbox Code Playgroud)

在这个例子中很简单,因为它们的顺序正确并且只有 3 个示例。实际上users_df有 4000 行,geonames_df超过 300 万

我目前正在使用这个:

import ipaddress

networks = []
for …
Run Code Online (Sandbox Code Playgroud)

python ip python-3.x pandas

5
推荐指数
1
解决办法
1262
查看次数

Golang - 检查IP地址是否在网络中

鉴于:

  • 网络地址A :( 172.17.0.0/16)
  • 和来自主机B的IP地址:( 172.17.0.2/16)

如果B在A中怎么说?

所有地址都是以下列形式的字符串变量:[IP address in dot-decimal notation]/[subnet mask].我应该尝试通过操纵字符串(初步想法)来做到这一点.有不同的路径吗?

以下是Python的相同问题:

Go的另一种方法:

networking ip-address subnet go

3
推荐指数
4
解决办法
8028
查看次数

检查IP是否在Python的CIDR范围内

我知道这里有一些类似的问题,但是他们大多想要找到范围本身(它使用一些库,比如stackoverflow说的是我的问题的一个例子),并且是另一种语言.

我有办法将子网转换为子网中ip的范围的开头和结尾(好吧,措辞不好,就像1.1.1.1/16 -> (1.1.0.0 , 1.1.255.255))

我现在想检查是否1.1.2.2在此子网内.我可以简单地做一个><比较?

ip_range = ('1.1.0.0', '1.1.255.255')
if '1.1.2.2' >= ip_range[0] and '1.1.2.2' <= ip_range[1]:
     return True
Run Code Online (Sandbox Code Playgroud)

当我测试它时,它可以工作,但我不知道它是否总能用于任何ipv4 ip.我假设我只是比较ASCII顺序,所以这应该总是有效,但有没有例外?

python ip

2
推荐指数
3
解决办法
6936
查看次数

Python IP范围与IP范围匹配

是否有任何方法可以检查网络范围内的某些IP地址是否存在于另一个IP范围的子网中?

Example: 10.0.1.0/18 in 123.1.0.0/8 
Run Code Online (Sandbox Code Playgroud)

如果它存在,我需要它返回True,否则返回False.

python ip-address

0
推荐指数
1
解决办法
2683
查看次数

标签 统计

python ×7

ip-address ×5

ip ×3

networking ×2

subnet ×2

cidr ×1

compare ×1

go ×1

pandas ×1

python-3.x ×1