URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9772
[ Назад ]

Исходное сообщение
"Проблема в написании регулярного выражения на python"

Отправлено Alexadm , 04-Ноя-13 16:08 
Добрый день, коллеги..Изучаю Python и возникли непонятки..Дело вот в чём...
Имеется в linux команда на астере:asterisk -rx 'sip show peers', которая выдаёт следующую простыню:

отрывок
TEnnANT8806_IPPBX/core_88                              D   N   A  5080     OK (13 ms)
TEnnANT8807_IPPBX/core_88                              D   N   A  5080     OK (15 ms)
TEnnANT8808_IPPBX/core_88                              D       A  5080     OK (9 ms)  
TEnnANT8809_IPPBX/core_88                              D       A  5080     OK (10 ms)
TEnnANT8810_IPPBX/core_88                              D   N   A  5060     OK (6 ms)  
TEnnANT8811_IPPBX/core_88                              D   N   A  5060     OK (6 ms)  
TEnnANT8812_IPPBX/core_88                              D   N   A  5060     OK (6 ms)  
TEnnANT8813_IPPBX/core_88                              D       A  35060    Unmonitored
TEnnANT8814_IPPBX/core_88                              D       A  35060    Unmonitored
TEnnANT8815_IPPBX/core_88                              D       A  35060    Unmonitored
TEnnANT8816_IPPBX/core_88                              D       A  0        Unmonitored
TEnnANT8817_IPPBX/core_88                              D       A  35060    Unmonitored
TEnnANT8818_IPPBX/core_88                              D       A  35060    Unmonitored
TEnnANT8819_IPPBX/core_88                              D       A  35060    Unmonitored
TEnnANT8820_IPPBX/core_88                              D       A  0        Unmonitored
TEnnANT8821_IPPBX/core_88                              D   N   A  10020    OK (49 ms)
TEnnANT8822_IPPBX/core_88                              D   N   A  10020    OK (51 ms)
TEnnANT9901_IPPBX/core_99                              D   N   A  5060     OK (16 ms)
TEnnANT9902_IPPBX/core_99                              D   N   A  5060     OK (16 ms)
TEnnANT9903_IPPBX/core_99                              D   N   A  5060     OK (15 ms)
TEnnANT9904_IPPBX/core_99                              D   N   A  5060     OK (15 ms)
TEnnANT9905_IPPBX/core_99                              D   N   A  5060     OK (16 ms)
TEnnANT9906_IPPBX/core_99                              D   N   A  5060     OK (15 ms)
TEnnANT9907_IPPBX/core_99                              D   N   A  5060     OK (16 ms)
TEnnANT9908_IPPBX/core_99                              D   N   A  5060     OK (15 ms)

задача такова , что надо чекать значение в последнем столбце и смотреть значение выше 60 ms.. команду asterisk -rx 'sip show peers' повторять 3 раза, и если определённое значение на протяжении 3 попыток будет больше 60 ms, то выдавать его в почту...

Набросал некоторые части скрипта:

#!/usr/bin/env python

import subprocess
import re
import smtplib
from email.MIMEText import MIMEText

def asterisk_check():
        command = "asterisk -rx 'sip show peers' | awk '{print $1,$7,$8,$9}'"
        full_output = subprocess.call('{param1}'.format(param1=command), shell=True)

       awk = ""

asterisk_check()

#me = '___@__'
#you = '____@____'
#text = 'Asterisk Problem\n'
#subj = 'Asterisk Problem'
#
#server = "______"
#port = 25
#msg = MIMEText(text, "", "utf-8")
#msg['Subject'] = subj
#msg['From'] = me
#msg['To'] = you
#s = smtplib.SMTP(server, port)
#s.ehlo()
#s.starttls()
#s.ehlo()
#s.sendmail(me, you, msg.as_string())
#s.quit()

но вот , awk в скрипте питон это не правильно, хотелось бы использовать модуль re , но вот проблема с регулярным выражением, поэтому прошу вашей помощи... Заранее спасибо....


Содержание

Сообщения в этом обсуждении
"Проблема в написании регулярного выражения на python"
Отправлено mrrrr , 04-Ноя-13 21:56 
Задача использовать именно модуль re? Если это не самоцель, то можно было бы распарсить как-то так:

#!/usr/bin/env python
from pyparsing import Word, alphas, nums, oneOf, Optional

first = Word( alphas ) + Word( nums ) + "_" + Word( alphas ) + "/" + Word( alphas ) + "_" + Word( nums )
second = "D"
third = "N"
forth = Word( alphas )
fifth = Word( nums )
sixth = Word( alphas )
seventh = "(" + Word( nums ) + Word( alphas ) + ")"
asterisk = "TEnnANT9906_IPPBX/core_99                              D   N   A  5060     OK (15 ms)"
asterisk2 = "TEnnANT8819_IPPBX/core_88                              D       A  35060    Unmonitored"
grammar = first + second + Optional(third) + forth + fifth + sixth + Optional(seventh)
parsed = grammar.parseString( asterisk )
parsed2 = grammar.parseString( asterisk2 )
print parsed.asList()
print parsed2.asList()
print parsed[14]
try:
    print parsed2[14]
except IndexError:
    pass

$ ./4.py
['TEnnANT', '9906', '_', 'IPPBX', '/', 'core', '_', '99', 'D', 'N', 'A', '5060', 'OK', '(', '15', 'ms', ')']
['TEnnANT', '8819', '_', 'IPPBX', '/', 'core', '_', '88', 'D', 'A', '35060', 'Unmonitored']
15


"Проблема в написании регулярного выражения на python"
Отправлено Александр , 05-Ноя-13 13:26 
>[оверквотинг удален]
> print parsed[14]
> try:
>     print parsed2[14]
> except IndexError:
>     pass
> $ ./4.py
> ['TEnnANT', '9906', '_', 'IPPBX', '/', 'core', '_', '99', 'D', 'N', 'A', '5060',
> 'OK', '(', '15', 'ms', ')']
> ['TEnnANT', '8819', '_', 'IPPBX', '/', 'core', '_', '88', 'D', 'A', '35060', 'Unmonitored']
> 15

Спасибо за помощь, но при выполнении вашего парсинга выдаётся следующая ошибка такого вида:

Traceback (most recent call last):
  File "./asterisk_check.py", line 16, in <module>
    parsed = grammar.parseString( asterisk )
  File "/usr/lib/python2.7/dist-packages/pyparsing.py", line 1076, in parseString
    raise exc
pyparsing.ParseException: Expected "D" (at char 25), (line:1, col:26)

С чем может быть связана проблема не подскажете?? Спасибо за помощь


"Проблема в написании регулярного выражения на python"
Отправлено mrrrr , 05-Ноя-13 16:36 
> С чем может быть связана проблема не подскажете?? Спасибо за помощь

Это не был production ready пример, просто мысль в определенном направлении. :-)
Судя по ошибке во второй колонке кроме "D" может быть что-то еще. Как вариант - ничего. Пытался вчера найти описание, что вообще выдает команда asterisk -rx 'sip show peers', но сходу не нашел. Ориентировался на пару строк из вашего примера. А если дейтвительно делать, то логично иметь хорошее представление о предполагаемом выводе. Думаю, это верно и в случае, если вы будете разбирать вывод регулярными выражениями.


"Проблема в написании регулярного выражения на python"
Отправлено mrrrr , 05-Ноя-13 16:54 
С другой стороны, если вас awk устраивает, то не overkill ли для вас регулярки? Может, тогда так:
with open ('/home/user/sip_show_peers.txt', 'r') as aster_out:
    for i in aster_out:
        col = i.split()
        print col[0], col[6:8]


"Проблема в написании регулярного выражения на python"
Отправлено mrrrr , 05-Ноя-13 20:50 
Если нужно кол-во милисекунд, то:
with open ('/home/maccalan/sip_show_peers.txt', 'r') as aster_out:
    for i in aster_out:
        m = re.search('(\d+) ms', i)
        if m:
            print m.group(1)



"Проблема в написании регулярного выражения на python"
Отправлено NuINu , 06-Ноя-13 09:12 
> Если нужно кол-во милисекунд, то:
> with open ('/home/maccalan/sip_show_peers.txt', 'r') as aster_out:
>     for i in aster_out:
>         m = re.search('(\d+) ms',
> i)
>         if m:
>            
> print m.group(1)

я полагаю что все таки по мимо миллисекунд надо знать, а на каком пире вышла столь значительная задержка, поэтому просто миллисекунды находить бесполезно. поэтому строку все таки придется разбирать целиком. я предлагаю два этапа, чтобы потом не запутаться в регулярке.

import re
def work_parse(l):
    name_symb='[a-zA-Z0-9_]'
    pattern = '^(' + name_symb + '+)/(' + name_symb + '+)\s+(D\s+N\s+A|D\s+A)\s+(\d+)\s+(.+)'
    result=re.match(pattern,l)
    if result:
        print("find for %s: %s")%(result.group(1), result.group(5)),
        small_patt='OK\s+\((\d+)'
        small_res=re.match(small_patt,result.group(5))
        if small_res:
            print " %s(sec)"%small_res.group(1)
        else:
            print " Unmonitored"
    else:
        print("parse asterisk string error")
        

if __name__=='__main__':
    import timeit
    f=open('asterisk_peers', 'r')
    l=f.readline()
    while l:
        #print l
        work_parse(l)
        l=f.readline()
    f.close()


"Проблема в написании регулярного выражения на python"
Отправлено Александр , 06-Ноя-13 11:13 
>[оверквотинг удален]
>   print("parse asterisk string error")
> if __name__=='__main__':
>  import timeit
>  f=open('asterisk_peers', 'r')
>  l=f.readline()
>  while l:
>   #print l
>   work_parse(l)
>   l=f.readline()
>  f.close()

Вы правы, необходимо знать на каком пире такая задержка, интересный ход мысли в вашем скрипте, только что за файл f=open('asterisk_peers', 'r') ..

я пробовал через регулярки таким образом:

>>> import re
>>> asterisk = "TEnnANT9906_IPPBX/core_99                              D   N   A  5060     OK (15 ms)"
>>> search_regex = re.compile( ur"\((\d+) ms\)", re.M | re.S | re.U )
>>> match = search_regex.search(asterisk)
>>> match.groups()

('15',)

но вот имеено мс мало играют роли...
А как сделать чтобы команда asterisk -rx 'sip show peers' выполнялась 3 раза, и если все эти три раза на определённом пире есть юольшая задержка(свыше 60 mc), то выдавать в почту..

реализацию отправки в почту я делал таким образом:

me = '-----------------'
you = '----------------'
text = 'Asterisk Problem\n'
subj = 'Asterisk Problem'

server = "------------"
port = 25
msg = MIMEText(text, "", "utf-8")
msg['Subject'] = subj
msg['From'] = me
msg['To'] = you
s = smtplib.SMTP(server, port)
s.ehlo()
s.starttls()
s.ehlo()
s.sendmail(me, you, msg.as_string())
s.quit()



"Проблема в написании регулярного выражения на python"
Отправлено NuINu , 06-Ноя-13 11:39 
> Вы правы, необходимо знать на каком пире такая задержка, интересный ход мысли
> в вашем скрипте, только что за файл f=open('asterisk_peers', 'r') ..

у меня нет астериска, поэтому ваш вывод я просто скопировал в файл что бы отладить пример.


> но вот имеено мс мало играют роли...
> А как сделать чтобы команда asterisk -rx 'sip show peers' выполнялась 3
> раза, и если все эти три раза на определённом пире есть
> юольшая задержка(свыше 60 mc), то выдавать в почту..

что бы эта команда выполнялась три раза - выполните ее ТРИ раза. а вот что бы сопоставить результаты выполнения команд вам нужно на первом проходе создать хеш массив, ключем в котором сделать имя пира, ну а значением 1, если превышена задержка, или 0 если задержка в норме, выполняя в последствии нужно просто добавлять по 1 в нужные элементы массива, если задержка превышена, по окончании работы проверьте хеш массив, и если найдете там что нибудь равное 3 отправляете на почту имена этих пиров.


"Проблема в написании регулярного выражения на python"
Отправлено Александр , 06-Ноя-13 11:05 
>> С чем может быть связана проблема не подскажете?? Спасибо за помощь
> Это не был production ready пример, просто мысль в определенном направлении. :-)
> Судя по ошибке во второй колонке кроме "D" может быть что-то еще.
> Как вариант - ничего. Пытался вчера найти описание, что вообще выдает
> команда asterisk -rx 'sip show peers', но сходу не нашел. Ориентировался
> на пару строк из вашего примера. А если дейтвительно делать, то
> логично иметь хорошее представление о предполагаемом выводе. Думаю, это верно и
> в случае, если вы будете разбирать вывод регулярными выражениями.

вот полный вывод команды:

#asterisk -rx 'sip show peers'

Name/username              Host                                    Dyn Forcerport ACL Port     Status    
TEnnANT1101_IPPBX/core_11  ip                                       D   N   A  5063     OK (16 ms)
TEnnANT1102_IPPBX/core_11  ip                                       D   N   A  5060     OK (9 ms)  
TEnnANT1103_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1104_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1105_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1106_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1107_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1108_IPPBX/core_11  ip                                       D   N   A  1092     OK (9 ms)  
TEnnANT1109_IPPBX/core_11  ip                                       D   N   A  1093     OK (5 ms)  
TEnnANT1110_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1111_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1112_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1113_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1114_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1115_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1116_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1117_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1118_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1119_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1120_IPPBX/core_11  ip                                       D   N   A  5061     OK (9 ms)  
TEnnANT1121_IPPBX/core_11  ip                                       D   N   A  1103     OK (12 ms)
TEnnANT1122_IPPBX/core_11  ip                                       D   N   A  5062     OK (20 ms)
TEnnANT1123_IPPBX/core_11  ip                                       D   N   A  1041     OK (20 ms)
TEnnANT1124_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1125_IPPBX/core_11  (Unspecified)                            D   N   A  0        Unmonitored
TEnnANT1126_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1127_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1128_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1129_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1130_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1131_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1132_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1133_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1134_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1135_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1136_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1137_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1138_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1139_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1140_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1141_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1142_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1143_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1144_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1145_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1146_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1147_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1148_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1149_IPPBX/core_11  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1400_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1401_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1402_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1403_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1404_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1405_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1406_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1407_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1408_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1409_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1410_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1411_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1412_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1413_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1414_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1415_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1416_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1417_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1418_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1419_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1420_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1421_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1422_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1423_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1424_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1425_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1426_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1427_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1428_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1429_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1430_IPPBX/core_14  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1601_IPPBX/core_16  ip                                       D   N   A  5060     OK (45 ms)
TEnnANT1602_IPPBX/core_16  ip                                       D   N   A  5060     OK (44 ms)
TEnnANT1603_IPPBX/core_16  ip                                       D   N   A  5060     OK (44 ms)
TEnnANT1604_IPPBX/core_16  ip                                       D   N   A  5060     OK (44 ms)
TEnnANT1605_IPPBX/core_16  ip                                       D   N   A  5060     OK (46 ms)
TEnnANT1606_IPPBX/core_16  ip                                       D   N   A  5060     OK (45 ms)
TEnnANT1607_IPPBX/core_16  ip                                       D   N   A  5060     OK (92 ms)
TEnnANT1608_IPPBX/core_16  ip                                       D   N   A  5060     OK (92 ms)
TEnnANT1609_IPPBX/core_16  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1610_IPPBX/core_16  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1800_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1801_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1802_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1803_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1804_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1805_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1806_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1807_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1808_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1809_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1810_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1811_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1812_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1813_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1814_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT1815_IPPBX/core_18  (Unspecified)                            D   N   A  0        UNKNOWN    
TEnnANT2001_IPPBX/core_20  ip                                       D   N   A  5060     OK (22 ms)
TEnnANT2002_IPPBX/core_20  ip                                       D   N   A  5060     OK (20 ms)
TEnnANT2003_IPPBX/core_20  ip                                       D   N   A  5060     OK (21 ms)
TEnnANT2004_IPPBX/core_20  ip                                       D   N   A  5060     OK (21 ms)
TEnnANT2005_IPPBX/core_20  ip                                       D   N   A  5060     OK (23 ms)
TEnnANT2006_IPPBX/core_20  ip                                       D   N   A  5060     OK (20 ms)
TEnnANT2007_IPPBX/core_20  ip                                       D   N   A  5060     OK (22 ms)
TEnnANT2008_IPPBX/core_20  ip                                       D   N   A  5060     OK (54 ms)
TEnnANT2009_IPPBX/core_20  (Unspecified)                            D   N   A  0        UNKNOWN    


"Проблема в написании регулярного выражения на python"
Отправлено NuINu , 06-Ноя-13 11:27 
> вот полный вывод команды:
> #asterisk -rx 'sip show peers'

Александр, судя по всему у вас нет проблем с питоном? поменяйте чуть мою регулярку, и будет вам счастье.

можно так:
pattern = '^(' + name_symb + '+)/(' + name_symb + '+)+\s+\S+\s+(D\s+N\s+A|D\s+A)\s+(\d+)\s+(.+)'
можно так:

ip_symb='[a-zA-Z0-9_()]'
pattern = '^(' + name_symb + '+)/(' + name_symb + '+)+\s+' + ip_symb + '+\s+(D\s+N\s+A|D\s+A)\s+(\d+)\s+(.+)'


"Проблема в написании регулярного выражения на python"
Отправлено Александр , 06-Ноя-13 12:22 
>> вот полный вывод команды:
>> #asterisk -rx 'sip show peers'
> Александр, судя по всему у вас нет проблем с питоном? поменяйте чуть
> мою регулярку, и будет вам счастье.
> можно так:
> pattern = '^(' + name_symb + '+)/(' + name_symb + '+)+\s+\S+\s+(D\s+N\s+A|D\s+A)\s+(\d+)\s+(.+)'
> можно так:
> ip_symb='[a-zA-Z0-9_()]'
> pattern = '^(' + name_symb + '+)/(' + name_symb + '+)+\s+' +
> ip_symb + '+\s+(D\s+N\s+A|D\s+A)\s+(\d+)\s+(.+)'

Спасибо за помощь,попробую,отпишусь..


"Проблема в написании регулярного выражения на python"
Отправлено pavel_simple , 06-Ноя-13 11:35 
ИМХО
неправильная постановка задачи всегда ведёт к неправильному/неоптимальному её решению

google asterisk+snmp
google python+snmp