--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

как в MySQL проверить сеть?

51
12
С друзьями на NN.RU
В социальных сетях
Поделиться
Ged
03.02.2005
Может кто знает, как в MySQL проверить входит ли ип в сеть? А лучше как выбрать из одной таблицы все IP которые входят в одну из сетей из другой таблицы?
][рюкин
03.02.2005
По маске. Маска известна, я надеюсь?
Ged
03.02.2005
естественно...
т.е. в одной таблице IP типа "192.168.0.1", а в другой одно поле IP типа "192.168.0.0", и другое поле типа "255.255.255.0".
И соответственно нужно выбрать из первой таблицы все IP которые, входят....

Не могу придумать как оформить запрос... :-( MySQL 4.0.20
полностью решение я тебе не скажу, но попробую навести на мысль: регулярные выражения

Попробуй поискать в Гугле комбинации "регулярные выражения"(reqexp)&"SQL". Например, вот: http://www.realcoding.net/article2399.html

Возможно имеет смысл написать хранимую процедуру...
Ged
04.02.2005
Может я конечно сильно ошибаюсь, но регулярные выражения не катят...
Ged
04.02.2005
Для записей сети типа 192.168.0.0/24
это можно сделать так
select ip.ip from mask,ip where left(CONV(INET_ATON(ip.ip ),10,2), mask.size)=left(CONV(INET_ATON(mask.mask),10,2),mask.size);

Где соответственно ip - таблица со списком IP адресов которые проверяем, а mask таблица в хоторой лежат сети.
А вот как это сделать для записи типа 192.168.0.0/255.255.255.0??
Stainless
04.02.2005
не самый лаконичный, но самый простой способ добавить поля для ip сети и широковещательного:
...|iphost|netmask|ipnet|ipbcast|...
заполнять эти поля при вводе iphost и netmask автоматически, потом соответственно выборка уже по этим полям.
Ged
04.02.2005
Что-то я не совсем понял, как это??
Stainless
04.02.2005
пример:
хост А:
ip хоста http://192.168.0.9
маска 255.255.255.248
хост B:
ip хоста http://192.168.0.14
маска 255.255.255.248
-------------------------
хост A:
ip сети http://192.168.0.8
broadcast http://192.168.0.15
хост B:
ip сети http://192.168.0.8
broadcast http://192.168.0.15
- соответственно оба хоста находятся в одной подсети
Ged
04.02.2005
чо-то как-то больно поморочено.... :-\
попробуй так:
INET_ATON(_t1.ip )& INET_ATON(t1.mask) = INET_ATON(_t2.ip )& INET_ATON(t2.mask)

Т.е. переводишь в число, выделяешь биты сети (зануляешь биты хоста) и сравниваешь сети.
Зы: _ я поставил чтобы ннру не добавлял http://
иначе: http://t1.ip
Ged
05.02.2005
Большое спасибо. РАБОТАЕТ!!!!
P.S. А чтобы ннру всякую хрень на добавлял к вещам типа т1.ip перед ними можно ставить слеш, т.е. \т1.ip
P.P.S Он только еще и "\t" воспринимает хреново... :-(
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем
Последние темы форумов
Форум Тема (Автор) Последний ответ Ответов
Принтер лазерный HEWLETT PACKARD HP-6L

Принтер лазерный HEWLETT PACKARD HP-6L Отправка в регионы после оплаты. 3штуки БУ. Внешний вид из магазина простояли на складе...
Цена: 4 500 руб.

Материнские платы на запчасти и не только

Материнские платы на запчасти и не только Материнские платы и другие комплектующие Отправка в регионы после оплаты. Транспортной...
Цена: 3 000 руб.

Сетевой фильтр APC Surge Arrest

Сетевой фильтр APC Surge Arrest для радиолюбителя.и не только Отправка в регионы после оплаты. ЦЕНА 3000 руб. В рабочем состоянии....
Цена: 3 000 руб.

Игровой компьютер с монитором

i7 3770 palit gtx 1070 8gb 2ssd ( 120, 465 ) 1hdd ( 1tb ) бп - zalman zn500-gs2 монитор в комплекте
Цена: 25 000 руб.