<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Проблема в написании регулярного выражения на python</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html</link>
    <description>Добрый день, коллеги..Изучаю Python и возникли непонятки..Дело вот в чём...&lt;br&gt;Имеется в linux команда на астере:asterisk -rx &apos;sip show peers&apos;, которая выдаёт следующую простыню:&lt;br&gt;&lt;br&gt;отрывок&lt;br&gt;TEnnANT8806_IPPBX/core_88                              D   N   A  5080     OK (13 ms) &lt;br&gt;TEnnANT8807_IPPBX/core_88                              D   N   A  5080     OK (15 ms) &lt;br&gt;TEnnANT8808_IPPBX/core_88                              D       A  5080     OK (9 ms)  &lt;br&gt;TEnnANT8809_IPPBX/core_88                              D       A  5080     OK (10 ms) &lt;br&gt;TEnnANT8810_IPPBX/core_88                              D   N   A  5060     OK (6 ms)  &lt;br&gt;TEnnANT8811_IPPBX/core_88                              D   N   A  5060     OK (6 ms)  &lt;br&gt;TEnnANT8812_IPPBX/core_88                              D   N   A  5060     OK (6 ms)  &lt;br&gt;TEnnANT8813_IPPBX/core_88                              D       A  35060    Unmonitored &lt;br&gt;TEnnANT8814_IPPBX/core_88                              D       A  35060    Unmonitored &lt;br&gt;TEnnANT8815_IPPBX/core_88                </description>

<item>
    <title>Проблема в написании регулярного выражения на python (Александр)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#12</link>
    <pubDate>Wed, 06 Nov 2013 08:22:32 GMT</pubDate>
    <description>&amp;gt;&amp;gt; вот полный вывод команды: &lt;br&gt;&amp;gt;&amp;gt; #asterisk -rx &apos;sip show peers&apos; &lt;br&gt;&amp;gt; Александр, судя по всему у вас нет проблем с питоном? поменяйте чуть &lt;br&gt;&amp;gt; мою регулярку, и будет вам счастье.&lt;br&gt;&amp;gt; можно так: &lt;br&gt;&amp;gt; pattern = &apos;^(&apos; + name_symb + &apos;+)/(&apos; + name_symb + &apos;+)+&#092;s+&#092;S+&#092;s+(D&#092;s+N&#092;s+A&amp;#124;D&#092;s+A)&#092;s+(&#092;d+)&#092;s+(.+)&apos; &lt;br&gt;&amp;gt; можно так: &lt;br&gt;&amp;gt; ip_symb=&apos;&#091;a-zA-Z0-9_()&#093;&apos; &lt;br&gt;&amp;gt; pattern = &apos;^(&apos; + name_symb + &apos;+)/(&apos; + name_symb + &apos;+)+&#092;s+&apos; + &lt;br&gt;&amp;gt; ip_symb + &apos;+&#092;s+(D&#092;s+N&#092;s+A&amp;#124;D&#092;s+A)&#092;s+(&#092;d+)&#092;s+(.+)&apos; &lt;br&gt;&lt;br&gt;Спасибо за помощь,попробую,отпишусь..&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Проблема в написании регулярного выражения на python (NuINu)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#11</link>
    <pubDate>Wed, 06 Nov 2013 07:39:00 GMT</pubDate>
    <description>&amp;gt; Вы правы, необходимо знать на каком пире такая задержка, интересный ход мысли &lt;br&gt;&amp;gt; в вашем скрипте, только что за файл f=open(&apos;asterisk_peers&apos;, &apos;r&apos;) ..&lt;br&gt;&lt;br&gt;у меня нет астериска, поэтому ваш вывод я просто скопировал в файл что бы отладить пример.&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; но вот имеено мс мало играют роли...&lt;br&gt;&amp;gt; А как сделать чтобы команда asterisk -rx &apos;sip show peers&apos; выполнялась 3 &lt;br&gt;&amp;gt; раза, и если все эти три раза на определённом пире есть &lt;br&gt;&amp;gt; юольшая задержка(свыше 60 mc), то выдавать в почту..&lt;br&gt;&lt;br&gt;что бы эта команда выполнялась три раза - выполните ее ТРИ раза. а вот что бы сопоставить результаты выполнения команд вам нужно на первом проходе создать хеш массив, ключем в котором сделать имя пира, ну а значением 1, если превышена задержка, или 0 если задержка в норме, выполняя в последствии нужно просто добавлять по 1 в нужные элементы массива, если задержка превышена, по окончании работы проверьте хеш массив, и если найдете там что нибудь равное 3 отправляете на почту имена этих пиров.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Проблема в написании регулярного выражения на python (pavel_simple)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#10</link>
    <pubDate>Wed, 06 Nov 2013 07:35:40 GMT</pubDate>
    <description>ИМХО&lt;br&gt;неправильная постановка задачи всегда ведёт к неправильному/неоптимальному её решению&lt;br&gt;&lt;br&gt;google asterisk+snmp&lt;br&gt;google python+snmp&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Проблема в написании регулярного выражения на python (NuINu)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#9</link>
    <pubDate>Wed, 06 Nov 2013 07:27:46 GMT</pubDate>
    <description>&amp;gt; вот полный вывод команды: &lt;br&gt;&amp;gt; #asterisk -rx &apos;sip show peers&apos; &lt;br&gt;&lt;br&gt;Александр, судя по всему у вас нет проблем с питоном? поменяйте чуть мою регулярку, и будет вам счастье.&lt;br&gt;&lt;br&gt;можно так:&lt;br&gt;pattern = &apos;^(&apos; + name_symb + &apos;+)/(&apos; + name_symb + &apos;+)+&#092;s+&#092;S+&#092;s+(D&#092;s+N&#092;s+A&amp;#124;D&#092;s+A)&#092;s+(&#092;d+)&#092;s+(.+)&apos;&lt;br&gt;можно так:&lt;br&gt;&lt;br&gt;ip_symb=&apos;&#091;a-zA-Z0-9_()&#093;&apos;&lt;br&gt;pattern = &apos;^(&apos; + name_symb + &apos;+)/(&apos; + name_symb + &apos;+)+&#092;s+&apos; + ip_symb + &apos;+&#092;s+(D&#092;s+N&#092;s+A&amp;#124;D&#092;s+A)&#092;s+(&#092;d+)&#092;s+(.+)&apos;&lt;br&gt;</description>
</item>

<item>
    <title>Проблема в написании регулярного выражения на python (Александр)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#8</link>
    <pubDate>Wed, 06 Nov 2013 07:13:34 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;   print(&quot;parse asterisk string error&quot;) &lt;br&gt;&amp;gt; if __name__==&apos;__main__&apos;: &lt;br&gt;&amp;gt;  import timeit &lt;br&gt;&amp;gt;  f=open(&apos;asterisk_peers&apos;, &apos;r&apos;) &lt;br&gt;&amp;gt;  l=f.readline() &lt;br&gt;&amp;gt;  while l: &lt;br&gt;&amp;gt;   #print l &lt;br&gt;&amp;gt;   work_parse(l) &lt;br&gt;&amp;gt;   l=f.readline() &lt;br&gt;&amp;gt;  f.close() &lt;br&gt;&lt;br&gt;Вы правы, необходимо знать на каком пире такая задержка, интересный ход мысли в вашем скрипте, только что за файл f=open(&apos;asterisk_peers&apos;, &apos;r&apos;) ..&lt;br&gt;&lt;br&gt;я пробовал через регулярки таким образом:&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; import re &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; asterisk = &quot;TEnnANT9906_IPPBX/core_99                              D   N   A  5060     OK (15 ms)&quot; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; search_regex = re.compile( ur&quot;&#092;((&#092;d+) ms&#092;)&quot;, re.M &amp;#124; re.S &amp;#124; re.U ) &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; match = search_regex.search(asterisk) &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; match.groups() &lt;br&gt;&lt;br&gt;(&apos;15&apos;,)&lt;br&gt;&lt;br&gt;но вот имеено мс мало играют роли...&lt;br&gt;А как сделать чтобы команда asterisk -rx &apos;sip show peers&apos; выполнялась 3 раза, и если все эти три раза на определённом пире есть юольшая задержка(свыше 60 mc), то выдавать в почту..&lt;br&gt;&lt;br&gt;реализацию отправки в почту я делал таким образом:&lt;br&gt;&lt;br&gt;me = &apos;----------</description>
</item>

<item>
    <title>Проблема в написании регулярного выражения на python (Александр)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#7</link>
    <pubDate>Wed, 06 Nov 2013 07:05:05 GMT</pubDate>
    <description>&amp;gt;&amp;gt; С чем может быть связана проблема не подскажете?? Спасибо за помощь &lt;br&gt;&amp;gt; Это не был production ready пример, просто мысль в определенном направлении. :-) &lt;br&gt;&amp;gt; Судя по ошибке во второй колонке кроме &quot;D&quot; может быть что-то еще. &lt;br&gt;&amp;gt; Как вариант - ничего. Пытался вчера найти описание, что вообще выдает &lt;br&gt;&amp;gt; команда asterisk -rx &apos;sip show peers&apos;, но сходу не нашел. Ориентировался &lt;br&gt;&amp;gt; на пару строк из вашего примера. А если дейтвительно делать, то &lt;br&gt;&amp;gt; логично иметь хорошее представление о предполагаемом выводе. Думаю, это верно и &lt;br&gt;&amp;gt; в случае, если вы будете разбирать вывод регулярными выражениями.&lt;br&gt;&lt;br&gt;вот полный вывод команды:&lt;br&gt;&lt;br&gt;#asterisk -rx &apos;sip show peers&apos;&lt;br&gt;&lt;br&gt;Name/username              Host                                    Dyn Forcerport ACL Port     Status     &lt;br&gt;TEnnANT1101_IPPBX/core_11  ip                                       D   N   A  5063     OK (16 ms) &lt;br&gt;TEnnANT1102_IPPBX/core_11  ip                                       D   N   A  5060     OK (9 ms)  &lt;br&gt;TEnnANT1103_IPPBX/core_11  (Unspecified)          </description>
</item>

<item>
    <title>Проблема в написании регулярного выражения на python (NuINu)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#6</link>
    <pubDate>Wed, 06 Nov 2013 05:12:59 GMT</pubDate>
    <description>&amp;gt; Если нужно кол-во милисекунд, то: &lt;br&gt;&amp;gt; with open (&apos;/home/maccalan/sip_show_peers.txt&apos;, &apos;r&apos;) as aster_out: &lt;br&gt;&amp;gt;     for i in aster_out: &lt;br&gt;&amp;gt;         m = re.search(&apos;(&#092;d+) ms&apos;, &lt;br&gt;&amp;gt; i) &lt;br&gt;&amp;gt;         if m: &lt;br&gt;&amp;gt;             &lt;br&gt;&amp;gt; print m.group(1) &lt;br&gt;&lt;br&gt;я полагаю что все таки по мимо миллисекунд надо знать, а на каком пире вышла столь значительная задержка, поэтому просто миллисекунды находить бесполезно. поэтому строку все таки придется разбирать целиком. я предлагаю два этапа, чтобы потом не запутаться в регулярке.&lt;br&gt;&lt;br&gt;import re&lt;br&gt;def work_parse(l):&lt;br&gt;name_symb=&apos;&#091;a-zA-Z0-9_&#093;&apos;&lt;br&gt;pattern = &apos;^(&apos; + name_symb + &apos;+)/(&apos; + name_symb + &apos;+)&#092;s+(D&#092;s+N&#092;s+A&amp;#124;D&#092;s+A)&#092;s+(&#092;d+)&#092;s+(.+)&apos;&lt;br&gt;result=re.match(pattern,l)&lt;br&gt;if result:&lt;br&gt;print(&quot;find for &#037;s: &#037;s&quot;)&#037;(result.group(1), result.group(5)),&lt;br&gt;small_patt=&apos;OK&#092;s+&#092;((&#092;d+)&apos;&lt;br&gt;small_res=re.match(small_patt,result.group(5))&lt;br&gt;if small_res:&lt;br&gt;print &quot; &#037;s(sec)&quot;&#037;small_res.group(1)&lt;br&gt;else:&lt;br&gt;print &quot; Unmonitored&quot;&lt;br&gt;else:&lt;br&gt;print(&quot;parse asterisk string error&quot;)&lt;br&gt;&lt;br&gt;&lt;br&gt;if __name__==&apos;__main__&apos;:&lt;br&gt;im</description>
</item>

<item>
    <title>Проблема в написании регулярного выражения на python (mrrrr)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#5</link>
    <pubDate>Tue, 05 Nov 2013 16:50:40 GMT</pubDate>
    <description>Если нужно кол-во милисекунд, то:&lt;br&gt;with open (&apos;/home/maccalan/sip_show_peers.txt&apos;, &apos;r&apos;) as aster_out:&lt;br&gt;    for i in aster_out:&lt;br&gt;        m = re.search(&apos;(&#092;d+) ms&apos;, i)&lt;br&gt;        if m:&lt;br&gt;            print m.group(1)&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Проблема в написании регулярного выражения на python (mrrrr)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9772.html#4</link>
    <pubDate>Tue, 05 Nov 2013 12:54:44 GMT</pubDate>
    <description>С другой стороны, если вас awk устраивает, то не overkill ли для вас регулярки? Может, тогда так:&lt;br&gt;with open (&apos;/home/user/sip_show_peers.txt&apos;, &apos;r&apos;) as aster_out:&lt;br&gt;    for i in aster_out:&lt;br&gt;        col = i.split()&lt;br&gt;        print col&#091;0&#093;, col&#091;6:8&#093;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
