<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Не могу разобратся с Bash скриптом</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html</link>
    <description>Всем добрый день.&lt;br&gt;Есть скрипт, назовем его check.sh. Скрипт писан на Bash 3.2.25&lt;br&gt;В скрипте есть перемененная, куда заносится IP адресс($1)&lt;br&gt;Как можно организовать проверку правильности ввода? Т.е. правильность ввода IPV4 адреса?&lt;br&gt;Крайний вариант - проверка каждого символа циклом =) Но это долго, и я уверен, есть варианты проще. &lt;br&gt;                   Буду благодарен за любой совет.&lt;br&gt;</description>

<item>
    <title>ip - как много в этом звуке (Zenith)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#16</link>
    <pubDate>Thu, 07 Jun 2012 19:45:40 GMT</pubDate>
    <description>Взяв из вышенаписанного самое необходимое, для себя определил вот такую ф-цию:&lt;br&gt;&lt;br&gt;#!/bin/bash&lt;br&gt;&lt;br&gt;checkip()&#123;&lt;br&gt;IFS=&quot;.&quot;&lt;br&gt;arr=($1)&lt;br&gt;echo &quot;Кол-во элементов в массиве $&#123;#arr&#091;&#064;&#093;&#125;&quot;&lt;br&gt;i=0&lt;br&gt;        if &#091; $&#123;#arr&#091;&#064;&#093;&#125; -ne 4 &#093;; then&lt;br&gt;           return 0&lt;br&gt;        else&lt;br&gt;&lt;br&gt;            for octet in $&#123;arr&#091;&#064;&#093;&#125;; do&lt;br&gt;&lt;br&gt;                case $octet in&lt;br&gt;                *&#091;!0-9&#093;*&amp;#124;&quot;&quot;)  return 0;;&lt;br&gt;                esac&lt;br&gt;&lt;br&gt;                if &#091; $i == 0 &#093;; then&lt;br&gt;                    case $octet in&lt;br&gt;                    &quot;255&quot;&amp;#124;&quot;&quot;)        return 0;;&lt;br&gt;                    &quot;0&quot;&amp;#124;&quot;&quot;)          return 0;;&lt;br&gt;                    esac&lt;br&gt;                fi&lt;br&gt;&lt;br&gt;                if &#091; $i == 3 &#093;; then&lt;br&gt;                    case $octet in&lt;br&gt;                    &quot;255&quot;&amp;#124;&quot;&quot;)   return 0;;&lt;br&gt;                    &quot;0&quot;&amp;#124;&quot;&quot;)     return 0;;&lt;br&gt;                    esac&lt;br&gt;                fi&lt;br&gt;&lt;br&gt;                if &#091; $i == 1 &#093;; then&lt;br&gt;                    case $octet in&lt;br&gt;                    &quot;255&quot;&amp;#124;&quot;&quot;)     return 0;;&lt;br&gt;                    esac&lt;br&gt;                fi&lt;br&gt;&lt;br&gt; </description>
</item>

<item>
    <title>гы, какая интересная теема - никак не кончится (Andrey Mitrofanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#15</link>
    <pubDate>Tue, 23 Dec 2008 08:11:22 GMT</pubDate>
    <description>&amp;gt;&amp;gt;      if ! &#091;&#091; $octet =~ &quot;^&#091;0-9&#093;*$&quot; &lt;br&gt;&amp;gt;Баши-и-изм. $))) Проверка на числовое значение ~~ &lt;br&gt;&amp;gt;if &#091; &quot;$((octet+0)) != &quot;$octet&quot; &#093; &lt;br&gt;&lt;br&gt;Вот из ABS-а ещё... _не_ одна &#037;)) ... реализация:&lt;br&gt;&lt;br&gt;isdigit ()    # Tests whether *entire string* is numerical.&lt;br&gt;&#123;             # In other words, tests for integer variable.&lt;br&gt;  &#091; $# -eq 1 &#093; &amp;#124;&amp;#124; return $FAILURE&lt;br&gt;  case $1 in&lt;br&gt;    *&#091;!0-9&#093;*&amp;#124;&quot;&quot;) return $FAILURE;;&lt;br&gt;              *) return $SUCCESS;;&lt;br&gt;  esac&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;# This function described in is_number.bash.&lt;br&gt;# is_number &amp;lt;input&amp;gt;&lt;br&gt;is_number() &#123;&lt;br&gt;    &#091; &quot;$#&quot; -eq 1 &#093;    &amp;#124;&amp;#124; return 1 # is blank?&lt;br&gt;    &#091; x&quot;$1&quot; == &apos;x0&apos; &#093; &amp;&amp; return 0 # is zero?&lt;br&gt;    local -i tst&lt;br&gt;    let tst=$1 2&amp;gt;/dev/null         # else is numeric!&lt;br&gt;    return $?&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Ужос! Взлрослые дядьки... Нет, чтоб програмированием заниматься - выкабениваются перед студентом. $*)&lt;br&gt;</description>
</item>

<item>
    <title>Bash скриптом - когда ж он кончится-то :-D (Andrey Mitrofanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#14</link>
    <pubDate>Tue, 23 Dec 2008 07:42:28 GMT</pubDate>
    <description>&amp;gt;&amp;gt;if ! $(($octet-$octet)) &amp;gt;/dev/null 2&amp;gt;&amp;1; then&lt;br&gt;&amp;gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;I was pointed out that check for number was not good...&lt;br&gt;&lt;br&gt;Ага :) , &quot;крайние&quot; значения нужно учитывать. Долго думал, чего не так &amp;#124;-) , наконец сообразил - нуль &quot;не пролезает&quot;.&lt;br&gt;&lt;br&gt;&amp;gt;      if ! &#091;&#091; $octet =~ &quot;^&#091;0-9&#093;*$&quot; &lt;br&gt;&lt;br&gt;Баши-и-изм. $))) Проверка на числовое значение ~~&lt;br&gt;if &#091; &quot;$((octet+0)) != &quot;$octet&quot; &#093;&lt;br&gt;&lt;br&gt;И кстати, да, тогда уж сразу --&lt;br&gt;&lt;br&gt;# студент бороздит просторы Большого театра&lt;br&gt;oct=&quot;(&#091;0-9&#093;&amp;#124;&#091;1-9&#093;&#091;0-9&#093;&amp;#124;1&#091;0-9&#093;&#091;0-9&#093;&amp;#124;2&#091;0-4&#093;&#091;0-9&#093;&amp;#124;25&#091;0-5&#093;)&quot;&lt;br&gt;check_ip4() &#123; &#091; &quot;$1&quot; =~ &quot;^$oct&#092;.$oct&#092;.$oct&#092;.$oct$&quot; &#093;; &#125;&lt;br&gt;&lt;br&gt;Гм, неужели мы родили &quot;Истину&quot;? :-))))&lt;br&gt; С пополнением!..&lt;br&gt;</description>
</item>

<item>
    <title>Не могу разобратся с Bash скриптом (sas)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#13</link>
    <pubDate>Tue, 23 Dec 2008 00:06:10 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;        return 0 &lt;br&gt;&amp;gt;      fi &lt;br&gt;&amp;gt;    done &lt;br&gt;&amp;gt;  fi &lt;br&gt;&amp;gt;  return 1 &lt;br&gt;&amp;gt;&#125; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&#091;/code&#093; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;--- Sas &lt;br&gt;&lt;br&gt;I was pointed out that check for number was not good...&lt;br&gt;&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;check_ip4() &#123;&lt;br&gt;  IFS=&quot;.&quot;&lt;br&gt;  arr=($1)&lt;br&gt;  if &#091; $&#123;#arr&#091;&#064;&#093;&#125; -ne 4 &#093;; then&lt;br&gt;    return 0&lt;br&gt;  else&lt;br&gt;    for octet in $&#123;arr&#091;&#064;&#093;&#125;; do&lt;br&gt;      if ! &#091;&#091; $octet =~ &quot;^&#091;0-9&#093;*$&quot; &#093;&#093;; then&lt;br&gt;        return 0&lt;br&gt;      fi&lt;br&gt;      let octet+=0&lt;br&gt;      if &#091;&#091; $octet -lt 0 &#093;&#093; &amp;#124;&amp;#124; &#091;&#091; $octet -gt 255 &#093;&#093;; then&lt;br&gt;          return 0&lt;br&gt;      fi&lt;br&gt;    done&lt;br&gt;  fi&lt;br&gt;  return 1&lt;br&gt;&#125;&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;--- Sas&lt;br&gt;</description>
</item>

<item>
    <title>Не могу разобратся с Bash скриптом (sas)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#12</link>
    <pubDate>Mon, 22 Dec 2008 23:27:23 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&#091;code&#093; &lt;br&gt;&amp;gt;ip=12.23.34.45 &lt;br&gt;&amp;gt;if check_ip4 $ip; then &lt;br&gt;&amp;gt;   echo &quot;ip=$ip is NOT valid&quot; &lt;br&gt;&amp;gt;else &lt;br&gt;&amp;gt;   echo &quot;ip=$ip is VALID&quot; &lt;br&gt;&amp;gt;fi &lt;br&gt;&amp;gt;&#091;/code&#093; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;--- Sas &lt;br&gt;&lt;br&gt;Small improvement to check only for numeric octets&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;&lt;br&gt;check_ip4() &#123;&lt;br&gt;  IFS=&quot;.&quot;&lt;br&gt;  arr=($1)&lt;br&gt;  if &#091; $&#123;#arr&#091;&#064;&#093;&#125; -ne 4 &#093;; then&lt;br&gt;    return 0&lt;br&gt;  else&lt;br&gt;    for octet in $&#123;arr&#091;&#064;&#093;&#125;; do&lt;br&gt;      if ! $(($octet-$octet)) &amp;gt;/dev/null 2&amp;gt;&amp;1; then&lt;br&gt;        return 0&lt;br&gt;      fi&lt;br&gt;      if &#091; $octet -lt 0 -o $octet -gt 255 &#093;; then&lt;br&gt;        return 0&lt;br&gt;      fi&lt;br&gt;    done&lt;br&gt;  fi&lt;br&gt;  return 1&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;--- Sas&lt;br&gt;</description>
</item>

<item>
    <title>Не могу разобратся с Bash скриптом (sas)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#11</link>
    <pubDate>Mon, 22 Dec 2008 23:09:18 GMT</pubDate>
    <description>&amp;gt;Всем добрый день. &lt;br&gt;&amp;gt;Есть скрипт, назовем его check.sh. Скрипт писан на Bash 3.2.25 &lt;br&gt;&amp;gt;В скрипте есть перемененная, куда заносится IP адресс($1) &lt;br&gt;&amp;gt;Как можно организовать проверку правильности ввода? Т.е. правильность ввода IPV4 адреса? &lt;br&gt;&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;Chisto bash :) &lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;&lt;br&gt;check_ip4() &#123;&lt;br&gt;  IFS=&quot;.&quot;&lt;br&gt;  arr=($1)&lt;br&gt;  if &#091; $&#123;#arr&#091;&#064;&#093;&#125; -ne 4 &#093;; then&lt;br&gt;    return 0&lt;br&gt;  else&lt;br&gt;    for octet in $&#123;arr&#091;&#064;&#093;&#125;; do&lt;br&gt;      if &#091; $octet -lt 0 -o $octet -gt 255 &#093;; then&lt;br&gt;        return 0&lt;br&gt;      fi&lt;br&gt;    done&lt;br&gt;  fi&lt;br&gt;  return 1&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Usage:&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;ip=12.23.34.45&lt;br&gt;if check_ip4 $ip; then&lt;br&gt;   echo &quot;ip=$ip is NOT valid&quot;&lt;br&gt;else&lt;br&gt;   echo &quot;ip=$ip is VALID&quot;&lt;br&gt;fi&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;--- Sas&lt;br&gt;</description>
</item>

<item>
    <title>я ж говорю, ненужные скрипты (Andrey Mitrofanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#10</link>
    <pubDate>Mon, 22 Dec 2008 15:45:50 GMT</pubDate>
    <description>&amp;gt;надо просто извлечь части(значения октетов)и проверить их на величину от 0 до 255. &lt;br&gt;&lt;br&gt;То есть по второй ссылке Вы не &quot;ходили&quot; и хотите это обсудить? B-)&lt;br&gt;&lt;br&gt;На самом баше, оно, конечно, тоже можно... но получится ещё длиннее и уродливее. Без хотя бы grep -o -- так вообще ужас.&lt;br&gt;</description>
</item>

<item>
    <title>продолжим бесполезные $) упражнения... (Andrey Mitrofanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#9</link>
    <pubDate>Mon, 22 Dec 2008 08:05:06 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Как можно организовать проверку правильности ввода? &lt;br&gt;&lt;br&gt;:) В &quot;постановке&quot; не было задачи &quot;выковыривать&quot;...&lt;br&gt;&lt;br&gt;&amp;gt;#значения :) &lt;br&gt;&amp;gt;#check ip : &apos;aww10.4.0.101w&apos; &lt;br&gt;&lt;br&gt;#Bad IP aww10.4.0.101w&lt;br&gt;#check ip : &apos;10.4.0.101&apos; &lt;br&gt;#Valid IP 10.4.0.101&lt;br&gt;&lt;br&gt;&amp;gt;ip=$1 &lt;br&gt;&amp;gt;echo &quot;check ip : &apos;$ip&apos;&quot; &lt;br&gt;&lt;br&gt;#&quot;Учись, студент!&quot;(с)&lt;br&gt;oct=&quot;(&#091;0-9&#093;&amp;#124;&#091;1-9&#093;&#091;0-9&#093;&amp;#124;1&#091;0-9&#093;&#091;0-9&#093;&amp;#124;2&#091;0-4&#093;&#091;0-9&#093;&amp;#124;25&#091;0-5&#093;)&quot;&lt;br&gt;&lt;br&gt;&amp;gt;ip=&#096;echo $ip &amp;#124; grep -o -e &quot;&#091;&#091;:digit:&#093;&#093;&#092;&#123;1,3&#092;&#125;.&#091;&#091;:digit:&#093;&#093;&#092;&#123;1,3&#092;&#125;.&#091;&#091;:digit:&#093;&#093;&#092;&#123;1,3&#092;&#125;.&#091;&#091;:digit:&#093;&#093;&#092;&#123;1,3&#092;&#125;&quot;&#096; &lt;br&gt;&lt;br&gt;# ...&quot;космические корабли бороздят просторы Большого театра&quot;...&lt;br&gt;ip2=&quot;&#096;echo &quot;$ip&quot;&amp;#124;egrep -o &quot;^$oct&#092;.$oct&#092;.$oct&#092;.$oct$&quot;&#096;&quot;&lt;br&gt;&lt;br&gt;&amp;gt;if ! &#091; $&#123;ip&#125;_ == _ &#093; ; then &lt;br&gt;&amp;gt;    echo &quot;Valid IP $ip&quot; &lt;br&gt;&amp;gt;else &lt;br&gt;&amp;gt;    echo &quot;Bad IP $ip&quot; &lt;br&gt;&amp;gt;fi&lt;br&gt;&lt;br&gt;&#091; &quot;$ip&quot; = &quot;$ip2&quot; &#093; &amp;&amp; echo &quot;Valid IP $ip&quot; &amp;#124;&amp;#124; echo &quot;Bad IP $ip&quot;&lt;br&gt;&lt;br&gt;&lt;br&gt;...&lt;br&gt;или даже&lt;br&gt;echo &quot;$ip&quot;&amp;#124;egrep -qs &quot;^$oct&#092;.$oct&#092;.$oct&#092;.$oct$&quot; &amp;gt;/dev/null &#092;&lt;br&gt;  &amp;&amp; echo Da! &amp;#124;&amp;#124; echo Net...&lt;br&gt;</description>
</item>

<item>
    <title>а давайте все писать ненужные _нам_ скрипты (NuINu)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7785.html#8</link>
    <pubDate>Mon, 22 Dec 2008 07:43:33 GMT</pubDate>
    <description>&amp;gt;...perl &lt;br&gt;&amp;gt;if ($string=~/^&#091;01&#093;?&#092;d&#092;d&amp;#124;2&#091;0-4&#093;&#092;d&amp;#124;25&#091;0-5&#093;)&#092;.&#091;01&#093;?&#092;d&#092;d&amp;#124;2&#091;0-4&#093;&#092;d&amp;#124;25&#091;0-5&#093;)&#092;.&#091;01&#093;?&#092;d&#092;d&amp;#124;2&#091;0-4&#093;&#092;d&amp;#124;25&#091;0-5&#093;)&#092;.&#091;01&#093;?&#092;d&#092;d&amp;#124;2&#091;0-4&#093;&#092;d&amp;#124;25&#091;0-5&#093;)$/) &#123; &#125; &lt;br&gt;&amp;gt;http://www.opennet.ru/docs/RUS/perl_help/perl_help-perl.html.gz &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;...awk &lt;br&gt;&amp;gt;awk -F &apos;&#091;.&#093;&apos; &apos;function ok(n) &#123; &amp;gt;&amp;gt;&amp;gt;и далее= http://www.opennet.ru/tips/info/1811.shtml&lt;br&gt;&lt;br&gt;не-не, это лишнее, регэксп усложнять не надо, надо просто извлечь части(значения октетов)и проверить их на величину от 0 до 255.&lt;br&gt;</description>
</item>

</channel>
</rss>
