Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
2 / 2 / 0
Регистрация: 03.08.2018
Сообщений: 34

Пересечение IP адресов

18.09.2020, 10:08. Показов 6360. Ответов 8

Студворк — интернет-сервис помощи студентам
Добрый день!

Просьба помочь с решением. Необходимо проверить есть ли пересечение IP адресов из df2 в df ?

df:
IP
185.59.69.32/29
185.59.69.40/29
185.59.69.48/28
185.59.69.64/28
185.59.69.96/32
185.59.69.41/32
188.115.195.96/28
84.235.97.0/28
84.235.101.0/28

df2:
IP2
84.235.97.0/28
185.59.69.48/28
185.59.69.96/32

Вот мой готовый работающий цикл, но если сравнивается один IP адресс с df

Python
1
2
3
4
5
6
ip1 = ipaddress.ip_address('188.115.195.102')
for i in df['IP']:
    subnet1 = ipaddress.ip_network(i)
    list(subnet1.hosts())
    if ip1 in subnet1:
        print("Intersection found in:", i)
Code
1
Intersection found in: 188.115.195.96/28
А тут я пытаюсь сравнить df2 с df, но ничего не получается.
Python
1
2
3
4
5
6
7
8
for i in df['IP']:
    for j in df2['IP2']:
        subnet1 = ipaddress.ip_network(i)
        subnet2 = ipaddress.ip_network(j)
        list(subnet1.hosts())
        list(subnet2.hosts())
        if subnet2 in subnet1:
            print("Intersection found in:", i)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2020, 10:08
Ответы с готовыми решениями:

фильтр ip адресов в IIS 6, как разрешить сайт только для определенного круга ip адресов
как поставить фильтрацию ip адресов для веб узла на iis 6? Мне нужно чтобы доступ к wcf службе был только у нескольких машин. ОС windows...

Найти пересечение двух множеств и вывести данное пересечение и кол-во элементов в нем
Здравствуйте, помогите, пожалуйста, дорешать задачу. Условие: найти пересечение двух множеств и вывести данное пересечение и кол-во...

Пересечение двух прямых и проверка на пересечение
Доброго времени суток слизал функцию проверки отсюда:/segments_intersection_checking на всякий случай у меня она выглядит так: int...

8
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
18.09.2020, 10:47
Python
1
2
3
4
5
ip1 = set(("185.59.69.32/29", "185.59.69.40/29", "185.59.69.48/28"))
ip2 = set(("84.235.97.0/28", "185.59.69.48/28", "185.59.69.96/32"))
 
 
print(ip1 & ip2)  # {'185.59.69.48/28'}
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
18.09.2020, 10:48
Python
1
2
3
4
5
6
7
8
9
10
11
12
df = ['185.59.69.32/29','185.59.69.40/29','185.59.69.48/28',
      '185.59.69.64/28','185.59.69.96/32','185.59.69.41/32',
      '188.115.195.96/28','84.235.97.0/28','84.235.101.0/28']
df2 = ['84.235.97.0/28','185.59.69.48/28','185.59.69.96/32']
 
import ipaddress as ip
 
for i in df:
    for j in df2:
        for k in list(ip.ip_network(j).hosts()):
            if k in list(ip.ip_network(i).hosts()):
                print(k)
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
18.09.2020, 11:09
maaad, если речь про пандас, то это надо явно в теме указывать!
Первое правило пандас и нумпи - если ты там что-то делаешь циклом то делаешь что-то не так, там на все есть функции!

Первая ссылка в гугле

Python
1
2
3
4
5
6
>>> import pandas as pd
>>> df = pd.DataFrame({'IP':['185.59.69.32/29','84.235.97.0/28']})
>>> df2 = pd.DataFrame({'IP':['185.49.69.32/29','84.235.97.0/28']})
>>> df.merge(df2)
               IP
0  84.235.97.0/28
0
18.09.2020, 11:10

Не по теме:

Welemir1, снова множества не пригодились :(

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
18.09.2020, 11:15
DmFat, почему, они очень даже нужны, автор же может не использовать датафреймы и пойти твоим верным путем)
0
2 / 2 / 0
Регистрация: 03.08.2018
Сообщений: 34
18.09.2020, 12:52  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
maaad, если речь про пандас, то это надо явно в теме указывать!
Первое правило пандас и нумпи - если ты там что-то делаешь циклом то делаешь что-то не так, там на все есть функции!
Welemir1
Да, использую pandas. Немного уточню, бывает так что в df2 могут быть неверные IP адреса и маски. Поэтому нужно каждый subnet разбивать на IP адреса и сравнивать с IP адресами df.
Можно сделать это без merge?

Добавлено через 1 минуту
TAVulator
в print(k) мне нужен вывод print(i), но i дублируется n-ое количество раз.
Можно сделать так чтобы выводились только уникальные i ?

P.s. Я только учусь.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
18.09.2020, 13:04
Цитата Сообщение от maaad Посмотреть сообщение
Можно сделать это без merge?
да, источник все там же -гугл и документация пандас
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.09.2020, 08:50
Лучший ответ Сообщение было отмечено maaad как решение

Решение

Цитата Сообщение от DmFat Посмотреть сообщение
print(ip1 & ip2) # {'185.59.69.48/28'}
Очень смешно. Ты в курсе. Что такое компьютерные сети?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import ipaddress
 
ip1 = '''\
185.59.69.32/33
185.59.69.32/29
185.59.69.40/29
185.59.69.48/28
185.59.69.64/28
185.59.69.96/32
185.59.69.41/32
188.115.195.96/28
84.235.97.0/28
84.235.101.0/28'''
 
ip2 = '''\
84.235.97.0/28
185.59.69.48/28
185.59.69.96/32'''
 
net1 = []
for i in ip1.split():
    try:
        net1.append(ipaddress.ip_network(i))
    except ValueError as e:
        print(e)
net2 = []
for i in ip2.split():
    try:
        net2.append(ipaddress.ip_network(i))
    except ValueError as e:
        print(e)
for i in net1:
    for j in net2:
        if i.overlaps(j):
            print(i, j)
Code
1
2
3
4
'185.59.69.32/33' does not appear to be an IPv4 or IPv6 network
185.59.69.48/28 185.59.69.48/28
185.59.69.96/32 185.59.69.96/32
84.235.97.0/28 84.235.97.0/28
Добавлено через 2 минуты
Так нагляднее
Code
1
185.59.69.0/24 185.59.69.96/32
Одна сеть является подсетью другой.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2020, 08:50
Помогаю со студенческими работами здесь

Пересечение треугольников 3d (пересечение плоскостей)
Написал программу 3d изображения треугольников , все работает ,можно крутить вокруг . Но если нарисовать два пересекающихся треугольника...

БД адресов
Парни нужна ваша помощь и ваш совет для создания БД и связей между таблицами. Как пишут во всех букварях, самое главное правильно...

Дублирование IP адресов
Не знаю к кому обратится, но такая проблема. У меня стоит система умного дома Fibaro. т.к интернет покрытие плохое все связано кабелями....

Хранение ip адресов в БД
Приветствую. Такая задача: Есть база mybd с таблицей mytable и со столбами username и ip 1) Как хранить за 1 ячейкой username несколько...

Диапазоны IP-адресов
Для чего используются следующие диапазоны адресов: 1) 0.0.0.0 - 0.255.255.255 2) 248.0.0.0 - 255.255.255.255


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru