2015-02-06 5 views
1

У меня есть список IP-адресов с CIDR нотации, такие как:Найти, если IP существует в диапазоне CIDR IP-адреса вручную Python

10.10.1.32/27

Что я хочу сделать, это проверить, если IP попадает в этот диапазон. Поэтому я хочу видеть, попадает ли там 10.10.1.44, что бы это было, или что 10.10.1.90 нет.

Я знаю, что в настоящее время существует много библиотек python, таких как ipcalc и netaddr.

Но я не сделаю это от руки. Я знаю, что мне нужно преобразовать IP-адреса в двоичные файлы и выполнить некоторые вычисления на основе этого. Я чувствую, что я довольно близко, но я не на 100% на побитовые операции в Python.

Я нашел здесь один, который делает это для C, но я не могу найти, как это сделать на Python, не используя библиотеку.

Спасибо!

ответ

0

Я думаю, вы можете легко адаптировать сценарий here. Он даст вам сетевые и широковещательные адреса, скажем N1.N2.N3.N4 и B1.B2.B3.B4. Тогда вы просто проверить, если адрес вы тестируете A1.A2.A3.A4 находится в пределах двух, делая

if N1 <= A1 <= B1 and .... and N4 <= A4 <= B4: 
    return True 
return False 
0

Я думаю, что пакет netaddr имеет то, что вам нужно. Я фактически делаю все вычисления IP с этой библиотекой.

https://pypi.python.org/pypi/netaddr