powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Интересный запрос по базе IP-адресов
9 сообщений из 9, страница 1 из 1
Интересный запрос по базе IP-адресов
    #32528877
Richard NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица c полем srcaddr (cidr), внутри IP-адреса с маской /32
srcaddr
-------
212.23.24.110/32
212.23.23.112/32
81.18.124.11/32

Каким образом в результате выполнения запроса можно сгруппировать значения так чтобы получить только адреса сетей.Например так:
212.23.24.0/24
81.18.124.0/24 и т.д.
...
Рейтинг: 0 / 0
Интересный запрос по базе IP-адресов
    #32529166
serega2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
SELECT FROM <имя таблицы> 
          WHERE srcaddr LIKE '%.0___'
          GROUP BY srcaddr
...
Рейтинг: 0 / 0
Интересный запрос по базе IP-адресов
    #32530294
Richard NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ERROR: Unable to identify an operator '~~' for types 'cidr' and '"unknown"'
You will have to retype this query using an explicit cast

Суть такова что LIKE не работает с типом данных cidr.
Еще этот запрос не подходит т.к. в базе нет адресов сетей типа '%.0/24',а есть только IP адреса... интересно то как получить все адреса сетей имея только IP адреса.
...
Рейтинг: 0 / 0
Интересный запрос по базе IP-адресов
    #32530426
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю так как нет никаких предопределенных функций то
стоит попробовать что-то такое:
tst=> SELECT ip FROM t1
WHERE ip::text LIKE '%.26.%'
GROUP BY ip;
В contribe я ничего готового необнаружил - народ видимо и так обходится.
Впрочем у меня таких задач небыло - мож знатоки чего подскажут .
...
Рейтинг: 0 / 0
Интересный запрос по базе IP-адресов
    #32530537
Richard NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ERROR: Cannot cast type cidr to text

Невозможно преобразование cidr в текст. Есть идея, что можно организовать битовый сдвиг до вида 192.168.3.0 (из значений вида 192.168.3.5 , 192.168.3.6 и т.п.) и поместить в отдельную таблицу недублирующиеся элементы.
Тогда появляется новый вопрос. Как можно организовать битовый сдвиг IP адресов на 8 последних битов....
...
Рейтинг: 0 / 0
Интересный запрос по базе IP-адресов
    #32530717
Richard NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде как нашел выход из этой проблемы....

select distinct network(set_masklen(srcaddr,24)) from log;

сначала проставляем что все адреса это адреса сети, а потом получаем на выходе требуемые значения...

set_masklen(inet, integer) -- set_masklen('192.168.1.5/24', 16) -- 192.168.1.5/16

network(inet) -- network('192.168.1.5/24') -- 192.168.1.0/24
...
Рейтинг: 0 / 0
Интересный запрос по базе IP-адресов
    #32530745
Wireless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все гениальное просто ;)

Код: plaintext
1.
2.
select network((ipt.ip::text||'/24')::inet) as net, count(*)
from iptable ipt
group by  1 

если будет возникать ошибка вида
ERROR: invalid input syntax for type inet: "162.33.177.12/32/24"

то запрос нужно будет переписать на такой

Код: plaintext
1.
2.
select network((substr(ipt.ip::text,  1 , length(ipt.ip::text) - 3 )||'/24')::inet) as net, count(*)
from iptable ipt
group by  1 

дерзай..
...
Рейтинг: 0 / 0
Интересный запрос по базе IP-адресов
    #32530755
Richard NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем! Разобрался!

ЗЫ Действительно все гениальное просто!
...
Рейтинг: 0 / 0
Интересный запрос по базе IP-адресов
    #32530778
Wireless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не видел твой последний пост, да, с set_masklen красивее...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Интересный запрос по базе IP-адресов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]