Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как производить вычисления ip-адресов силами только sql?
|
|||
|---|---|---|---|
|
#18+
Есть у нас на работе база Mysql. В ней есть следующие столбцы (описание - название - тип поля): 1. Ip-адрес подсети - IpAddr - INT 2. Маска подсети - Mask - INT 3. Первый узел подсети - StartIp - INT 4. Броадкаст подсети - EndIp - INT 5. Id точки из другой таблицы - IdFilial - INT Ip-адреса хранятся в виде Integer и туда-сюда конвертятся нативной командой INET_ATON и INET_NTOA. Если требуется найти, какой сети соответствует ip адрес, то создается запрос, содержащий примерно такое условие Код: plsql 1. У меня есть желание сократить таблицу, убрав столбцы StartIp и EndIp. Никак не соображу, какого вида вычисления должны быть для подобного запроса? Адреса, которые я получаю на входе - это просто список "живых" хостов, полученных от nmap-а при сканировании сетки 10.0.0.0/8. Маски у меня прописаны в базе, сетевую маску конкретного хоста на входе я не знаю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 15:44 |
|
||
|
Как производить вычисления ip-адресов силами только sql?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. Правда, попадание в сеть не гарантируется... ну и предполагается, что в таблице нет вложенных подсетей. Или более строго Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 15:55 |
|
||
|
Как производить вычисления ip-адресов силами только sql?
|
|||
|---|---|---|---|
|
#18+
PS. Поля StartIp и EndIp явно лишние, ибо однозначно определяются адресом и маской сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 15:56 |
|
||
|
Как производить вычисления ip-адресов силами только sql?
|
|||
|---|---|---|---|
|
#18+
Akina Код: sql 1. 2. 3. Правда, попадание в сеть не гарантируется... ну и предполагается, что в таблице нет вложенных подсетей. У меня сети нарезаны по 6 хостов, по 2 хоста, по 32 хоста и т.д. Часть сети /24 режется на подсети с масками 27-30 бит. Т.е. половина сети 10.20.30.0/24 порезана маской /30, другая часть 29. У меня под это условие попадет куча сетей. Вариант не подходит. AkinaИли более строго Код: sql 1. 2. 3. А вот этот вариант, кажется подходит, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:14 |
|
||
|
Как производить вычисления ip-адресов силами только sql?
|
|||
|---|---|---|---|
|
#18+
sergey_privacyУ меня сети нарезаны по 6 хостов это как? sergey_privacyполовина сети 10.20.30.0/24 порезана маской /30, другая часть 29. В таком случае у тебя есть несколько сетей, напр. 10.20.30.0/30, 10.20.30.4/30, 10.20.30.8/30...10.20.30.192/29, 10.20.30.200/29, 10.20.30.208/29... Но НЕТ сети 10.20.30.0/24 - и не должно быть и записи в таблице сетей. sergey_privacyУ меня под это условие попадет куча сетей. MAX() оставит одну. sergey_privacyВариант не подходит. Попробовал и не получил ожидаемого результата? или так, от балды сказал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 19:48 |
|
||
|
|

start [/forum/search_topic.php?author=Alexander+Mavrin&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
12ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 1301ms |
| total: | 1484ms |

| 0 / 0 |
