<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Раздел полезных советов: Операции проверки IP на вхождение в сеть a.b.c.d/N или a.b.c.d/n.n.n.n</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/1786.html</link>
    <description>$find_net = &apos;123.123.45.4/30&apos;;&lt;br&gt;$some_ip  = &apos;123.123.45.5&apos;;&lt;br&gt;my ($net_ip, $net_mask) = split(/&#092;//, $s_find_ip);&lt;br&gt;my ($ip1, $ip2, $ip3, $ip4) = split(/&#092;./, $net_ip);&lt;br&gt;$net_ip_raw pack (&apos;CCCC&apos;, $ip1, $ip2, $ip3, $ip4);&lt;br&gt;$net_mask_raw = pack (&apos;B32&apos;, (1 x $net_mask), (1 x (32 - $net_mask)));&lt;br&gt;# $some_ip_raw  вычисляем по аналогии с $net_ip_raw&lt;br&gt;if ($some_ip_raw &amp; $net_mask) eq $net_ip_raw)&#123;&lt;br&gt;  # $some_ip_raw входит в подсеть $find_net&lt;br&gt;&#125;&lt;br&gt;При указании маски вида $find_net = &apos;123.123.45.4/255.255.255.224&apos;&lt;br&gt;вместо pack можно преобразовать IP и маску в число по алгоритму:&lt;br&gt;$net_ip_raw = ($ip1&amp;lt;&amp;lt;24) + ($ip2&amp;lt;&amp;lt;16) + ($ip3&amp;lt;&amp;lt;8) + $ip4;&lt;br&gt;Тоже проделать с маской и проверяемым IP, вхождение в подсеть будет проверяться условием:&lt;br&gt;if ($some_ip_raw &amp; $net_mask) == $net_ip_raw)&#123;&lt;br&gt;  # $some_ip_raw входит в подсеть $find_net&lt;br&gt;&#125;&lt;br&gt;Другой вариант:&lt;br&gt;use Socket;&lt;br&gt;sub isinsubnet &#123;&lt;br&gt;    my ($subnethost, $subnetmask, $testhost) = &#064;_;&lt;br&gt;    $subnethost = inet_aton($subnethost);&lt;br&gt;    $subnetmask = inet_aton($subnetmask);&lt;br&gt;    $testhost = ine</description>

<item>
    <title>Операции проверки IP на вхождение в сеть a.b.c.d/N или a.b.c.d/n.n.n.n (nordicdyno)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/1786.html#6</link>
    <pubDate>Fri, 23 Jan 2009 09:12:44 GMT</pubDate>
    <description>Я могу ошибаться (т.к. не использовал), но разве Net::Patricia не то же самое умеет делать?&lt;br&gt;</description>
</item>

<item>
    <title>исправленный скрипт для a.b.c.d/N (Skif)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/1786.html#5</link>
    <pubDate>Tue, 01 Nov 2005 17:02:11 GMT</pubDate>
    <description>тут они тоже присутсвуют&lt;br&gt;my ($ip1, $ip2, $ip3, $ip4) = split(/&#092;./, $some_ip); &lt;br&gt;my $some_ip_raw = pack (&apos;CCCC&apos;, $ip1, $ip2, $ip3, $ip4);&lt;br&gt;&lt;br&gt;лучше сменить на&lt;br&gt;&lt;br&gt;my ($ip_1, $ip_2, $ip_3, $ip_4) = split(/&#092;./, $some_ip); &lt;br&gt;my $some_ip_raw = pack (&apos;CCCC&apos;, $ip_1, $ip_2, $ip_3, $ip_4);&lt;br&gt;&lt;br&gt;или убрать my перед ($ip1, $ip2, $ip3, $ip4)</description>
</item>

<item>
    <title>исправленный скрипт для a.b.c.d/N (Denis Chelukanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/1786.html#4</link>
    <pubDate>Wed, 18 Feb 2004 22:44:25 GMT</pubDate>
    <description>В примере пара ошибочек из-за чего он и не работает. Вот исправленный :&lt;br&gt;&lt;br&gt;$find_net = &apos;123.123.45.4/30&apos;;&lt;br&gt;$some_ip  = &apos;123.123.45.5&apos;;&lt;br&gt;my ($net_ip, $net_mask) = split(/&#092;//, $find_net);&lt;br&gt;my ($ip1, $ip2, $ip3, $ip4) = split(/&#092;./, $net_ip);&lt;br&gt;my $net_ip_raw = pack (&apos;CCCC&apos;, $ip1, $ip2, $ip3, $ip4);&lt;br&gt;my $net_mask_raw = pack (&apos;B32&apos;, (1 x $net_mask), (1 x (32 - $net_mask)));&lt;br&gt;&lt;br&gt;my ($ip1, $ip2, $ip3, $ip4) = split(/&#092;./, $some_ip);&lt;br&gt;my $some_ip_raw = pack (&apos;CCCC&apos;, $ip1, $ip2, $ip3, $ip4);&lt;br&gt;&lt;br&gt;# $some_ip_raw  вычисляем по аналогии с $net_ip_raw&lt;br&gt;if (($some_ip_raw &amp; $net_mask_raw) eq $net_ip_raw)&#123;&lt;br&gt;  print &quot;$some_ip входит в подсеть $find_net&quot;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Операции проверки IP на вхождение в сеть a.b.c.dN или a.b.c.... (Zergling)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/1786.html#3</link>
    <pubDate>Tue, 25 Mar 2003 12:03:53 GMT</pubDate>
    <description>&amp;gt;&amp;gt;В примере полно ошибок! &lt;br&gt;&amp;gt;&amp;gt;Насколько я понимаю это проверка на вшивость ? :)))) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;А пальцем на ошибки показать можно ? :-) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;PS. Выдиралось из разных в отдельности рабочих кусков кода и дописывалось в &lt;br&gt;&amp;gt;online, поэтому вполне могли появиться ошибки. &lt;br&gt;1)в первом там грамматические ошибки&lt;br&gt;плюс еще то что берем из пустой переменной :)&lt;br&gt;см в split&lt;br&gt;2)это во втором примере&lt;br&gt;полный листинг&lt;br&gt;$find_net = &apos;123.123.45.0/255.255.255.0&apos;;&lt;br&gt;$some_ip = &apos;123.123.45.254&apos;;&lt;br&gt;my ($net_ip, $net_mask) = split(/&#092;//, $find_net);&lt;br&gt;#При указании маски вида $find_net = &apos;123.123.45.4/255.255.255.224&apos;&lt;br&gt;#вместо pack можно преобразовать IP и маску в число по алгоритму:&lt;br&gt;my ($ip1, $ip2, $ip3, $ip4) = split(/&#092;./, $net_ip);&lt;br&gt;$net_ip_raw = ($ip1&amp;lt;&amp;lt;24) + ($ip2&amp;lt;&amp;lt;16) + ($ip3&amp;lt;&amp;lt;8) + $ip4;&lt;br&gt;my ($ip1, $ip2, $ip3, $ip4) = split(/&#092;./, $net_mask);&lt;br&gt;$net_mask_raw = ($ip1&amp;lt;&amp;lt;24) + ($ip2&amp;lt;&amp;lt;16) + ($ip3&amp;lt;&amp;lt;8) + $ip4;&lt;br&gt;my ($ip1, $ip2, $ip3, $ip4) = split(/&#092;./, $some_ip);&lt;br&gt;$some_ip_raw = ($ip1&amp;lt;&amp;lt;24) + ($ip2&amp;lt;&amp;lt;16) + ($ip3&amp;lt;&amp;lt;8) + $ip4;&lt;br&gt;&lt;br&gt;if (($some_ip_raw </description>
</item>

<item>
    <title>Операции проверки IP на вхождение в сеть a.b.c.dN или a.b.c.... (Maxim Chirkov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/1786.html#2</link>
    <pubDate>Tue, 25 Mar 2003 10:55:08 GMT</pubDate>
    <description>&amp;gt;В примере полно ошибок! &lt;br&gt;&amp;gt;Насколько я понимаю это проверка на вшивость ? :)))) &lt;br&gt;&lt;br&gt;А пальцем на ошибки показать можно ? :-)&lt;br&gt;&lt;br&gt;PS. Выдиралось из разных в отдельности рабочих кусков кода и дописывалось в online, поэтому вполне могли появиться ошибки.&lt;br&gt;</description>
</item>

<item>
    <title>Операции проверки IP на вхождение в сеть a.b.c.dN или a.b.c.dn.n.n.n (Zergling)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/1786.html#1</link>
    <pubDate>Tue, 25 Mar 2003 07:46:10 GMT</pubDate>
    <description>В примере полно ошибок!&lt;br&gt;Насколько я понимаю это проверка на вшивость ? :))))&lt;br&gt;</description>
</item>

</channel>
</rss>
