* [Comm] Проверка по regexp вхождения IP в подсеть @ 2008-02-19 14:06 Slava Dubrovskiy 2008-02-19 14:18 ` Vladimir Karpinsky 0 siblings, 1 reply; 6+ messages in thread From: Slava Dubrovskiy @ 2008-02-19 14:06 UTC (permalink / raw) To: community Здравствуйте. Подскажите пожалуйста, как проверить с помощью regexp входит ли IP в подсеть? Например: сеть дана в виде 192.168.1.0/24 Как проверить при помощи regexp входит ли IP 192.168.1.5 в эту подсеть? -- WBR, Dubrovskiy Vyacheslav ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Проверка по regexp вхождения IP в подсеть 2008-02-19 14:06 [Comm] Проверка по regexp вхождения IP в подсеть Slava Dubrovskiy @ 2008-02-19 14:18 ` Vladimir Karpinsky 2008-02-19 14:42 ` Slava Dubrovskiy 0 siblings, 1 reply; 6+ messages in thread From: Vladimir Karpinsky @ 2008-02-19 14:18 UTC (permalink / raw) To: slava, ALT Linux Community general discussions Slava Dubrovskiy пишет: > Подскажите пожалуйста, как проверить с помощью regexp входит ли IP в > подсеть? > > Например: сеть дана в виде 192.168.1.0/24 > Как проверить при помощи regexp входит ли IP 192.168.1.5 в эту подсеть? ipcalc и его man -- С уважением, Владимир ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Проверка по regexp вхождения IP в подсеть 2008-02-19 14:18 ` Vladimir Karpinsky @ 2008-02-19 14:42 ` Slava Dubrovskiy 2008-02-19 15:30 ` Alexey Morsov 0 siblings, 2 replies; 6+ messages in thread From: Slava Dubrovskiy @ 2008-02-19 14:42 UTC (permalink / raw) To: Vladimir Karpinsky, ALT Linux Community [-- Attachment #1: Type: text/plain, Size: 734 bytes --] Vladimir Karpinsky пишет: > Slava Dubrovskiy пишет: >> Подскажите пожалуйста, как проверить с помощью regexp входит ли IP в >> подсеть? >> >> Например: сеть дана в виде 192.168.1.0/24 >> Как проверить при помощи regexp входит ли IP 192.168.1.5 в эту подсеть? > ipcalc и его man Это конечно хорошо. Есть и перловый модуль Net-IP-Match-Regexp. Но у меня есть база, в которой хранятся IP в виде 192.168.1.0/24 и нужно sql запросом проверять вхождение IP в сеть. -- WBR, Dubrovskiy Vyacheslav [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/x-pkcs7-signature, Size: 3249 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Проверка по regexp вхождения IP в подсеть 2008-02-19 14:42 ` Slava Dubrovskiy @ 2008-02-19 15:30 ` Alexey Morsov 2008-02-19 15:40 ` Алексей Шенцев 1 sibling, 1 reply; 6+ messages in thread From: Alexey Morsov @ 2008-02-19 15:30 UTC (permalink / raw) To: community [-- Attachment #1: Type: text/plain, Size: 790 bytes --] On Tue, Feb 19, 2008 at 04:42:29PM +0200, Slava Dubrovskiy wrote: > Это конечно хорошо. Есть и перловый > модуль Net-IP-Match-Regexp. Но у меня есть база, в > которой хранятся IP в виде 192.168.1.0/24 и нужно > sql запросом проверять вхождение IP в сеть. /192\.168\.1\.(\d{1,3})/ ? -- С уважением, Алексей Морсов программист ЗАО "ИК "Риком-Траст" Jabber: samurai@www.fondmarket.ru ICQ: 196766290 www.ricom.ru www.fondmarket.ru ALT Linux Team Member email: swi@altlinux.ru web: www.altlinux.ru, www.sisyphus.ru NP: Reaper / Hell Starts With An H: 9 - Memento Mori [paused] #9/17 2:27/4:09 (59%) [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 481 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Проверка по regexp вхождения IP в подсеть 2008-02-19 15:30 ` Alexey Morsov @ 2008-02-19 15:40 ` Алексей Шенцев 0 siblings, 0 replies; 6+ messages in thread From: Алексей Шенцев @ 2008-02-19 15:40 UTC (permalink / raw) To: ALT Linux Community general discussions В сообщении от Tuesday 19 February 2008 18:30:21 Alexey Morsov написал(а): > On Tue, Feb 19, 2008 at 04:42:29PM +0200, Slava Dubrovskiy wrote: > > Это конечно хорошо. Есть и перловый > > модуль Net-IP-Match-Regexp. Но у меня есть база, в > > которой хранятся IP в виде 192.168.1.0/24 и нужно > > sql запросом проверять вхождение IP в сеть. > > /192\.168\.1\.(\d{1,3})/ ? А можно пойти через соответствующие функции mysql'а и двоичную логику. -- С уважением Шенцев Алексей Владимирович. E-mail: ashen@nsrz.ru XMPP: ashen@altlinux.org, AlexShen@jabber.ru ICQ: 271053845 ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <47BB2E3D.8080000@mail.ru>]
* Re: [Comm] Проверка по regexp вхождения IP в подсеть @ 2008-02-20 7:53 ` Slava Dubrovskiy 0 siblings, 0 replies; 6+ messages in thread From: Slava Dubrovskiy @ 2008-02-20 7:53 UTC (permalink / raw) To: Vladimir Karpinsky, ALT Linux Community [-- Attachment #1: Type: text/plain, Size: 3768 bytes --] >>>> Подскажите пожалуйста, как проверить с помощью regexp входит ли IP >>>> в подсеть? >>>> >>>> Например: сеть дана в виде 192.168.1.0/24 >>>> Как проверить при помощи regexp входит ли IP 192.168.1.5 в эту >>>> подсеть? >>> ipcalc и его man >> Это конечно хорошо. Есть и перловый модуль Net-IP-Match-Regexp. Но у >> меня есть база, в которой хранятся IP в виде 192.168.1.0/24 и нужно >> sql запросом проверять вхождение IP в сеть. > > Тогда можно написать перловый скрипт, в котором расчитывается сеть для > данного IP, потом адрес сети вытаскивается из базы (или наоборот, > вытаскивается IP из базы и расчитывается для него сеть, я не до конца > понял детали) и эти две переменные сравниваются. Я не знаю упомянутого > выше модуля, но с ним писать перловый скрипт вероятно удобнее, хотя > при должном желании можно вызвать ipcalc из перла. Или я что-то важное > упустил? Да. Наверно я не полностью описал задачу. Суть в чем. Есть база на mysql. Есть сквид. И есть внешний хелпер mysql_acl на C который умеет делать запросы к мускулю. Больше ничего другого делать он не умеет. Можно конечно сделать хелпер на перле и всю логику перенести туда, но во первых не хочется разводить зоопарк (в одном месте этот хелпер уже работает), во вторых хелпер на перле будет медленней, и в третьих это еще необходимо устанавливать перл, что совсем не желательно. Поэтому перл отпадает точно. Но вообщем-то проблему решил. Сделал табличку, в которой 2 поля: IP и mask В поле IP значение заносится с помощью преобразования через INET_ATON() и в поле mask - маска в нотации CIDR. Во время занесения в базу из IP вычисляется сеть и заносится IP сети. Как это делается наглядно показано тут: http://jodies.de/ipcalc Например имеем 192.168.1.50/17 Вычисляем сеть средствами php. Это будет 192.168.0.0 В базу заносим mysql> SELECT INET_ATON('192.168.0.0') as IP; +------------+ | IP | +------------+ | 3232235520 | +------------+ И маску в неизменном виде. Когда нам нужно проверить входит ли IP в сеть указанную в базе, мы просто переводим его в число с помощью INET_ATON(), вычисляем по маске и сети количество IP в сети http://library.mnwhost.ru/doc/ip.php и проверяем попадает ли число в вычисленный диапазон. Получается никаких regexp, перл и т.д. на этапе проверки. -- WBR, Dubrovskiy Vyacheslav [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/x-pkcs7-signature, Size: 3249 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-02-20 7:53 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-02-19 14:06 [Comm] Проверка по regexp вхождения IP в подсеть Slava Dubrovskiy 2008-02-19 14:18 ` Vladimir Karpinsky 2008-02-19 14:42 ` Slava Dubrovskiy 2008-02-19 15:30 ` Alexey Morsov 2008-02-19 15:40 ` Алексей Шенцев 2008-02-20 7:53 ` Slava Dubrovskiy
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git