Advertisement
Guest User

Untitled

a guest
May 27th, 2015
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.53 KB | None | 0 0
  1. #!/usr/bin/python
  2. # coding: utf8
  3. #
  4. import string, sys, os, re
  5. import pymssql
  6. import hashlib
  7.  
  8. path_read = "PbxCollect01.log"
  9. y = 2012 # начальный год. выяснен эмпиричеким путем
  10. bs = 0 # условие для увеличения года
  11. d={} # словарь для данных
  12.  
  13. # подготовка базы sqlite
  14.  
  15. con = pymssql.connect("192.168.7.42", "sa", "sa", "pbx")
  16. cur = con.cursor()
  17. #cur.execute("IF OBJECT_ID('pbx', 'U') IS NOT NULL DROP TABLE pbx")
  18. #cur.execute('CREATE TABLE pbx (id VARCHAR(34) NOT NULL PRIMARY KEY, year VARCHAR(5), month VARCHAR(3), day VARCHAR (3), phone VARCHAR(5), number VARCHAR(50), t_begin TIME, t_count TIME)')
  19. #con.commit()
  20.  
  21. with open(path_read) as f:
  22.     regex = re.compile(r'1.* O .*') # выделяем только исходящие звонки
  23.     for i in re.finditer(regex, f.read()):
  24.         Line = i.group().strip()
  25.         L = Line.split()
  26.     if len(L) > 9: # если произошло слияние двух строк в логе, отбрасываем
  27.         continue
  28.     if L[7] == "0.00": # если нету набранного номера, отбрасываем
  29.         continue
  30.     if L[5] == "00:00:00": # если длительность звонка нулевая, отбрасываем
  31.         continue
  32.         L1 = L[5].split(':')
  33.         if L1[0] == "23": # исключаем звонки с ошибочной длительностью в 23 часа
  34.             continue
  35.         L2 = L[3].split('/')
  36.     # основная логика разбивки по месяцам и годам
  37.         if L2[0] == "01" and bs == 0:
  38.             y = y + 1
  39.             bs = 1
  40.         if L2[0] == "12":
  41.             bs = 0
  42.         L = Line.split()
  43.         A = L[3].split('/')
  44.         lines = Line.replace(L[3],A[0] + ' ' + A[1] + ' ' + str(y)) # добавили в данные год, разделили пробелами, объединили в строку
  45.     _,phone,_,month,day,year,t_begin,t_count,_,number,_ = lines.split() # заполняем переменные из строки
  46.     pbxs = year + month + day + phone + number + t_begin + t_count
  47.     hashs =  hashlib.md5(pbxs).hexdigest()
  48.     pbx = ((hashs, year, month, day, phone, number, t_begin, t_count))
  49. #   print pbx
  50.     cur.execute('SELECT id FROM pbx WHERE id=%s',hashs)
  51.     if cur.fetchall() == []:
  52.         cur.execute("INSERT INTO pbx (id, year, month, day, phone, number, t_begin, t_count) VALUES(%s, %s, %s, %s, %s, %s, convert(time,%s), convert(time,%s))", pbx)
  53. con.commit()
  54. con.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement