<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Поиск, проверка наличия подсети в текстовом файле по IP</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html</link>
    <description>Имеется некий IP, пусть будет 8.8.8.8. Имеется текстовый файл с длинным списком подсетей с различными длинами префикса, к примеру, /12, /15, /24. Возможно ли написать какой-то хитрый grep, который бы проверял есть ли среди этих подсетей та, в которую входит нужный нам IP, допустим, упомянутый 8.8.8.8/32? Может на Perl-е что-то или ещё на чём? Если кто знает, то, просьба, привести пример такого скрипта.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (михалыч)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#13</link>
    <pubDate>Mon, 30 Apr 2018 03:47:51 GMT</pubDate>
    <description>&amp;gt; Имеется некий IP, пусть будет 8.8.8.8. Имеется текстовый файл с длинным списком &lt;br&gt;&amp;gt; подсетей с различными длинами префикса, к примеру, /12, /15, /24. Возможно &lt;br&gt;&amp;gt; ли написать какой-то хитрый grep, который бы проверял есть ли среди &lt;br&gt;&amp;gt; этих подсетей та, в которую входит нужный нам IP, допустим, упомянутый &lt;br&gt;&amp;gt; 8.8.8.8/32? Может на Perl-е что-то или ещё на чём? Если кто &lt;br&gt;&amp;gt; знает, то, просьба, привести пример такого скрипта.&lt;br&gt;&lt;br&gt;да не вопрос! поздновато, конечно, но лучше поздно, чем никогда&lt;br&gt;может ещё кому-то сгодится&lt;br&gt;абсолютно бесплатно, без регистрации и смс&lt;br&gt;&#091;code&#093;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;use Net::CIDR;&lt;br&gt;&lt;br&gt;my $ip_addr = $ARGV&#091;0&#093;;&lt;br&gt;my $netlist = $ARGV&#091;1&#093;;&lt;br&gt;&lt;br&gt;## проверяем, что на входе?&lt;br&gt;if (!defined($ARGV&#091;0&#093;) &amp;#124;&amp;#124; !defined($ARGV&#091;1&#093;)) &#123;&lt;br&gt;    print &quot;enter&#092;n&#092;targ 1 - ip address&#092;nand&#092;n&#092;targ 2 - path to the network list file&#092;n&quot;;&lt;br&gt;    exit;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;## проверяем правильность входящего ip-адреса&lt;br&gt;if ($ip_addr !~ /^((&#092;d&amp;#124;&#091;01&#093;?&#092;d&#092;d&amp;#124;2&#091;0-4&#093;&#092;d&amp;#124;25&#091;0-5&#093;)&#092;.)&#123;3&#125;(&#092;d&amp;#124;&#091;01&#093;?&#092;d&#092;d&amp;#</description>
</item>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (михалыч)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#12</link>
    <pubDate>Sun, 29 Apr 2018 16:02:27 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; =&amp;gt; $mask &#125;; &lt;br&gt;&amp;gt; В перле есть и именно создание мегарегулярного выражения &lt;br&gt;&amp;gt; use Net::IP::Match::Regexp qw( create_iprange_regexp match_ip ); &lt;br&gt;&amp;gt; $banned_regexp = create_iprange_regexp(&#064;banned); &lt;br&gt;&amp;gt; if (match_ip($address, $banned_regexp)) &lt;br&gt;&amp;gt; &#123; &lt;br&gt;&amp;gt;      syslog(LOG_WARNING, &quot;$address is already banned!&quot;); &lt;br&gt;&amp;gt;       return 1; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; но он немного не очень чтобы прямо быстрый слишком &lt;br&gt;&lt;br&gt;да можно ещё и Net::Subnet&lt;br&gt;автор утверждает, что он быстрый&lt;br&gt;&lt;br&gt;типа так&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;use Net::Subnet;&lt;br&gt;&lt;br&gt;my $ip_addr = $ARGV&#091;0&#093;;&lt;br&gt;my $ip_file = $ARGV&#091;1&#093;;&lt;br&gt;&lt;br&gt;open my $fh, &quot;&amp;lt;&quot;, $ip_file;&lt;br&gt;chomp (my &#064;farr = &amp;lt;$fh&amp;gt;);&lt;br&gt;close $fh;&lt;br&gt;&lt;br&gt;my $rfc = subnet_matcher &#064;farr;&lt;br&gt;&lt;br&gt;print $rfc-&amp;gt;($ip_addr) ? &apos;yes&apos; : &apos;no&apos;;&lt;br&gt;&lt;br&gt;но возможно ТС нужно знать, а в какие сети/подсети попадает проверяемый адрес ??&lt;br&gt;</description>
</item>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (Виктор)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#11</link>
    <pubDate>Tue, 24 Apr 2018 12:45:33 GMT</pubDate>
    <description>&amp;gt; В php я полный 0, вообще представления не имею что да как &lt;br&gt;&amp;gt; там. Что-то делаю только в bash, немного знаю sed, awk, но &lt;br&gt;&amp;gt; и тут не мегагуру - иначе не  задавал бы вопросов. &lt;br&gt;&amp;gt; У меня совершенно другого рода образование, работа - языки программирования я &lt;br&gt;&amp;gt; не изучал нигде и по работе они мне не нужны. Делать &lt;br&gt;&amp;gt; выводы про безголовость ничего не зная про меня - это 5 &lt;br&gt;&amp;gt; баллов, спасибо.&lt;br&gt;&lt;br&gt;Простите, но приведенный код это сплошные арифметические операции... Тут и знать нечего. Максимум, что вам там может быть непонятно, это explode(), pow() и ip2long(), гуглится в 2 минуты.&lt;br&gt;</description>
</item>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (Seryoga2014)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#10</link>
    <pubDate>Tue, 24 Apr 2018 11:07:47 GMT</pubDate>
    <description>&amp;gt; Не специально. Я взял старый кусок и немного дорисовал до его задач... &lt;br&gt;&amp;gt; Ну да, пропустил несколько &quot;;&quot;... Я ж не думал, что он &lt;br&gt;&amp;gt; настолько безголовый, что имея код, разложенный по полочкам и не сможет &lt;br&gt;&amp;gt; разобраться.&lt;br&gt;&lt;br&gt;В php я полный 0, вообще представления не имею что да как там. Что-то делаю только в bash, немного знаю sed, awk, но и тут не мегагуру - иначе не  задавал бы вопросов. У меня совершенно другого рода образование, работа - языки программирования я не изучал нигде и по работе они мне не нужны. Делать выводы про безголовость ничего не зная про меня - это 5 баллов, спасибо.&lt;br&gt;</description>
</item>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (Филимон Вдумчивый)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#9</link>
    <pubDate>Mon, 23 Apr 2018 17:40:29 GMT</pubDate>
    <description>&amp;gt; Имеется некий IP, пусть будет 8.8.8.8. Имеется текстовый файл с длинным списком &lt;br&gt;&amp;gt; подсетей с различными длинами префикса, к примеру, /12, /15, /24. Возможно &lt;br&gt;&lt;br&gt;use Net::IPAddress;&lt;br&gt;&lt;br&gt;&lt;br&gt;foreach my $net (&#064;nets)&lt;br&gt;&#123;&lt;br&gt;        if (Net::IPAddress::mask($net-&amp;gt;&#123;address&#125;, $net-&amp;gt;&#123;mask&#125;) eq Net::IPAddress::mask($address, $net-&amp;gt;&#123;mask&#125;))&lt;br&gt;        &#123;&lt;br&gt;            &lt;br&gt;            return 1;&lt;br&gt;        &#125;&lt;br&gt;    &#125;&lt;br&gt;&lt;br&gt;&#064;nets у меня заполняется  push &#064;nets, &#123; address =&amp;gt; $address, mask =&amp;gt; $mask &#125;;&lt;br&gt;&lt;br&gt;В перле есть и именно создание мегарегулярного выражения &lt;br&gt;use Net::IP::Match::Regexp qw( create_iprange_regexp match_ip );&lt;br&gt;&lt;br&gt;$banned_regexp = create_iprange_regexp(&#064;banned);&lt;br&gt;&lt;br&gt;if (match_ip($address, $banned_regexp))&lt;br&gt;&#123;&lt;br&gt;     syslog(LOG_WARNING, &quot;$address is already banned!&quot;);&lt;br&gt;      return 1;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;но он немного не очень чтобы прямо быстрый слишком&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (Виктор)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#8</link>
    <pubDate>Mon, 23 Apr 2018 11:26:36 GMT</pubDate>
    <description>&amp;gt; Прошу пардона, я совсем не в теме как можно запускать php из &lt;br&gt;&amp;gt; bash? WEB-сервера у меня нет, только консоль.&lt;br&gt;&lt;br&gt;Точно так же, как и Perl. PHP в этом плане ничем не отличается.&lt;br&gt;&lt;br&gt;&amp;gt; И мне нужно проверять file.txt с длинным списком подсетей &lt;br&gt;&amp;gt; - как его туда подставить? Пример строчки в bash можно?&lt;br&gt;&lt;br&gt;Я вам дал общий алгоритм разбора подсети и поиска в ней искомого хоста... Адаптация на вас, за бесплатно я вашу работу для вас делать не буду.&lt;br&gt;</description>
</item>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (Виктор)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#7</link>
    <pubDate>Mon, 23 Apr 2018 11:21:55 GMT</pubDate>
    <description>&amp;gt; Забудьте обо всем этом. в приведенном кусте кода есть несколько опечаток (намеренных? &lt;br&gt;&amp;gt; :) что приведет к невозможности его выполнения. И это будет непреодолимым &lt;br&gt;&amp;gt; препятствием для вас.&lt;br&gt;&amp;gt; Плюс к тому же этот код- концепт который вам надо дописать по &lt;br&gt;&amp;gt; месту...&lt;br&gt;&lt;br&gt;Не специально. Я взял старый кусок и немного дорисовал до его задач... Ну да, пропустил несколько &quot;;&quot;... Я ж не думал, что он настолько безголовый, что имея код, разложенный по полочкам и не сможет разобраться.&lt;br&gt;</description>
</item>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (xm)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#6</link>
    <pubDate>Mon, 23 Apr 2018 10:17:23 GMT</pubDate>
    <description>&amp;gt; Имеется некий IP, пусть будет 8.8.8.8. Имеется текстовый файл с длинным списком &lt;br&gt;&amp;gt; подсетей с различными длинами префикса, к примеру, /12, /15, /24.&lt;br&gt;&lt;br&gt;Есть CIDR grep (много вариантов). К примеру, https://github.com/mpangrazzi/cidr-grep&lt;br&gt;</description>
</item>

<item>
    <title>Поиск, проверка наличия подсети в текстовом файле по IP (fantom)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID15/4415.html#5</link>
    <pubDate>Mon, 23 Apr 2018 09:08:29 GMT</pubDate>
    <description>&amp;gt; Имеется некий IP, пусть будет 8.8.8.8. Имеется текстовый файл с длинным списком &lt;br&gt;&amp;gt; подсетей с различными длинами префикса, к примеру, /12, /15, /24. Возможно &lt;br&gt;&amp;gt; ли написать какой-то хитрый grep, который бы проверял есть ли среди &lt;br&gt;&amp;gt; этих подсетей та, в которую входит нужный нам IP, допустим, упомянутый &lt;br&gt;&amp;gt; 8.8.8.8/32? Может на Perl-е что-то или ещё на чём? Если кто &lt;br&gt;&amp;gt; знает, то, просьба, привести пример такого скрипта.&lt;br&gt;&lt;br&gt;IP - суть 32 битное число, сеть - диапазон чисел.&lt;br&gt;проверяете попадание числа в диапазон.....&lt;br&gt;awk вам в помощь.&lt;br&gt;</description>
</item>

</channel>
</rss>
