ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [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

* 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