Guest User

Untitled

a guest
Nov 24th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. #!/usr/local/bin/python
  2.  
  3. import re
  4. import datetime
  5. import psycopg2
  6. import codecs, sys
  7. from random import *
  8. import string
  9. from time import sleep
  10. import time
  11. import psycopg2, psycopg2.extensions, psycopg2.errorcodes
  12. import ipaddr
  13. import socket
  14.  
  15. filename = sys.argv[1]
  16.  
  17. conn = psycopg2.connect("host='XXXXXXXX' dbname='XXXXXXX' user='XXXXXXXXXXX' password='XXXXXXXXXXX'")
  18. trf=dict()
  19. ins = open( filename , "r" )
  20. for line in ins:
  21. if ( re.match('([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+([0-9]+)\s+([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)',line) ):
  22. s = re.match('([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+([0-9]+)\s+([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)',line)
  23. date = datetime.datetime.fromtimestamp(float(s.group(8))).strftime("%Y-%m-%d")
  24. src_ip = s.group(1)
  25. #srp_pr = s.group(2)
  26. dst_ip = s.group(3)
  27. #dst_pr = s.group(4)
  28. #proto = s.group(5)
  29. #packet = s.group(6)
  30. byte = float(s.group(7))
  31.  
  32. if ( ipaddr.IPAddress(src_ip) in ipaddr.IPNetwork('10.0.0.0/8') or ipaddr.IPAddress(src_ip) in ipaddr.IPNetwork('172.16.0.0/16')):
  33.  
  34. if trf.has_key(date) != True:
  35. trf[date] = dict()
  36.  
  37. if trf[date].has_key(src_ip) != True:
  38. trf[date][src_ip] = dict()
  39.  
  40. if trf[date][src_ip].has_key("out"):
  41. trf[date][src_ip]["out"] = trf[date][src_ip]["out"] + byte
  42. else:
  43. trf[date][src_ip]["out"] = byte
  44.  
  45. elif ( ipaddr.IPAddress(dst_ip) in ipaddr.IPNetwork('10.0.0.0/8') or ipaddr.IPAddress(dst_ip) in ipaddr.IPNetwork('172.16.0.0/16')):
  46. if trf.has_key(date) != True:
  47. trf[date] = dict()
  48.  
  49. if trf[date].has_key(dst_ip) != True:
  50. trf[date][dst_ip] = dict()
  51.  
  52. if trf[date][dst_ip].has_key("in"):
  53. trf[date][dst_ip]["in"] = trf[date][dst_ip]["in"] + byte
  54. else:
  55. trf[date][dst_ip]["in"] = byte
  56.  
  57.  
  58. #print trf
  59. #print trf["10.0.8.41"]["in"]
  60. #print type(byte)
  61. #####################
  62. # Analize OUT traffic
  63. #####################
  64.  
  65. #####################
  66. # Analize IN traffic
  67. #####################
  68. cur = conn.cursor()
  69.  
  70. for date in trf:
  71. for ipaddr in trf[date]:
  72. if trf[date][ipaddr].has_key("out"):
  73. out = trf[date][ipaddr]["out"]
  74. else:
  75. out = 0
  76.  
  77. if trf[date][ipaddr].has_key("in"):
  78. inn = trf[date][ipaddr]["in"]
  79. else:
  80. inn = 0
  81.  
  82. lock_tries = 1
  83. while lock_tries < 100000:
  84. try:
  85. cur.execute("LOCK TABLE traffic_day_traff IN ACCESS EXCLUSIVE MODE NOWAIT;")
  86. break
  87. except Exception, e:
  88. if e.pgcode == psycopg2.errorcodes.LOCK_NOT_AVAILABLE:
  89. conn.rollback()
  90. lock_tries += 1
  91. time.sleep(3)
  92. else:
  93. raise e
  94. else:
  95. sys.exit("unable to lock table reports")
  96.  
  97. cur.execute("SELECT * FROM traffic_day_traff WHERE ip='%s' and date='%s';" % (ipaddr, date))
  98. if cur.rowcount > 0:
  99. rows = cur.fetchall()
  100. for row in rows:
  101. #print ipaddr, row
  102. #row = cur.fetchone()
  103. #if cur.fetchone()[4] != None :
  104. #print ipaddr,cur.fetchone()[4]
  105. b_in=row[3] + inn
  106. b_out = row[4] + out
  107. cur.execute("UPDATE traffic_day_traff SET byte_in='%s', byte_out=%s WHERE ip='%s' and date='%s';" % (b_in, b_out, ipaddr, date))
  108. #row = cur.fetchone()
  109.  
  110. else:
  111. b_in= float(inn)
  112. b_out=float(out)
  113. cur.execute("INSERT INTO traffic_day_traff (\"ip\", \"byte_in\", \"byte_out\", \"date\") VALUES ('%s', '%s','%s','%s' )" % ( ipaddr, b_in, b_out,date))
  114. conn.commit()
  115.  
  116. conn.close()
Add Comment
Please, Sign In to add comment