- Проблема в написании регулярного выражения на python, mrrrr, 21:56 , 04-Ноя-13 (1)
- Проблема в написании регулярного выражения на python, Александр, 13:26 , 05-Ноя-13 (2)
- Проблема в написании регулярного выражения на python, mrrrr, 16:36 , 05-Ноя-13 (3)
- Проблема в написании регулярного выражения на python, mrrrr, 16:54 , 05-Ноя-13 (4)
- Проблема в написании регулярного выражения на python, mrrrr, 20:50 , 05-Ноя-13 (5)
- Проблема в написании регулярного выражения на python, NuINu, 09:12 , 06-Ноя-13 (6)
> Если нужно кол-во милисекунд, то: > 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, Александр, 11:13 , 06-Ноя-13 (8)
- Проблема в написании регулярного выражения на python, NuINu, 11:39 , 06-Ноя-13 (11)
> Вы правы, необходимо знать на каком пире такая задержка, интересный ход мысли > в вашем скрипте, только что за файл f=open('asterisk_peers', 'r') ..у меня нет астериска, поэтому ваш вывод я просто скопировал в файл что бы отладить пример. > но вот имеено мс мало играют роли... > А как сделать чтобы команда asterisk -rx 'sip show peers' выполнялась 3 > раза, и если все эти три раза на определённом пире есть > юольшая задержка(свыше 60 mc), то выдавать в почту..
что бы эта команда выполнялась три раза - выполните ее ТРИ раза. а вот что бы сопоставить результаты выполнения команд вам нужно на первом проходе создать хеш массив, ключем в котором сделать имя пира, ну а значением 1, если превышена задержка, или 0 если задержка в норме, выполняя в последствии нужно просто добавлять по 1 в нужные элементы массива, если задержка превышена, по окончании работы проверьте хеш массив, и если найдете там что нибудь равное 3 отправляете на почту имена этих пиров.
- Проблема в написании регулярного выражения на python, Александр, 11:05 , 06-Ноя-13 (7)
- Проблема в написании регулярного выражения на python, NuINu, 11:27 , 06-Ноя-13 (9)
> вот полный вывод команды: > #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, 11:35 , 06-Ноя-13 (10) +1
|