Advertisement
Guest User

Untitled

a guest
May 1st, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.46 KB | None | 0 0
  1. import glob
  2. import gzip
  3. import os
  4. import pymysql
  5. import logging
  6. import subprocess
  7.  
  8. # path to gz directory
  9. GZ_DIR = '/Users/mani/Desktop/mysql/csv'
  10. # Database Infomation
  11. DB_HOST='10.1.1.38'
  12. DB_USER='diaguser'
  13. DB_PASS='Password'
  14. DB_NAME='PADIAGDB'
  15. LOGFILE="exception.log"
  16.  
  17. def csv_reader(file, header=False):
  18.     import csv
  19.     with open(file, "r") as f:
  20.         reader = csv.reader(f)
  21.  
  22.         if header:
  23.             next(reader)
  24.  
  25.         for row in reader:
  26.             yield row
  27.  
  28. # function to connect sql
  29. def import_sql(filename, dbHostName, dbUser, dbPassword, databaseName):
  30.     #Prepare SQL query to INSERT a record into the database.
  31.  
  32.     # Open database connection
  33.     db = pymysql.connect(host=dbHostName,
  34.                          user=dbUser,
  35.                          password=dbPassword,
  36.                          db=databaseName,
  37.                          charset='utf8')
  38.  
  39.     for row in csv_reader(filename, False):
  40.         # prepare a cursor object using cursor() method
  41.         with db.cursor() as cursor:
  42.             if row[3] == "THREAT" and row[4] == "url":
  43.                 sql = ("INSERT INTO PADIAGDB.url ("
  44.                        "Domain,Receive_Time,Serial,Type,Threat_Content_Type,"
  45.                        "Config_Version,Generate_Time,Source_address,Destination_address,"
  46.                        "NAT_Source_IP,NAT_Destination_IP,Rule,Source_User,"
  47.                        "Destination_User,Application,Virtual_System,Source_Zone,"
  48.                        "Destination_Zone,Inbound_Interface,Outbound_Interface,Log_Action,"
  49.                        "Time_Logged,Session_ID,Repeat_Count,Source_Port,Destination_Port,"
  50.                        "NAT_Source_Port,NAT_Destination_Port,Flags,IP_Protocol,Action,"
  51.                        "URL_Filename,Threat_Content_Name,Category,Severity,Direction,"
  52.                        "Sequence_Number,Action_Flags,Source_Country,Destination_Country,"
  53.                        "cpadding,contenttype,pcap_id,filedigest,cloud,url_idx,user_agent,"
  54.                        "filetype,xff,referer,sender,subject,recipient,reportid,"
  55.                        "dg_hier_level_1,dg_hier_level_2,dg_hier_level_3,dg_hier_level_4,"
  56.                        "Virtual_System_Name,Device_Name,file_url )"
  57.                        ""
  58.                        "VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,"
  59.                        "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,"
  60.                        "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s"
  61.                        "); ")
  62.  
  63.             elif row[3] == "THREAT":
  64.                 sql = ("INSERT INTO PADIAGDB.threat ("
  65.                        "Domain,Receive_Time,Serial,Type,Threat_Content_Type,"
  66.                        "Config_Version,Generate_Time,Source_address,Destination_address,"
  67.                        "NAT_Source_IP,NAT_Destination_IP,Rule,Source_User,"
  68.                        "Destination_User,Application,Virtual_System,Source_Zone,"
  69.                        "Destination_Zone,Inbound_Interface,Outbound_Interface,Log_Action,"
  70.                        "Time_Logged,Session_ID,Repeat_Count,Source_Port,Destination_Port,"
  71.                        "NAT_Source_Port,NAT_Destination_Port,Flags,IP_Protocol,Action,"
  72.                        "URL_Filename,Threat_Content_Name,Category,Severity,Direction,"
  73.                        "Sequence_Number,Action_Flags,Source_Country,Destination_Country,"
  74.                        "cpadding,contenttype,pcap_id,filedigest,cloud,url_idx,user_agent,"
  75.                        "filetype,xff,referer,sender,subject,recipient,reportid,"
  76.                        "dg_hier_level_1,dg_hier_level_2,dg_hier_level_3,dg_hier_level_4,"
  77.                        "Virtual_System_Name,Device_Name,file_url )"
  78.                        ""
  79.                        "VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,"
  80.                        "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,"
  81.                        "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s"
  82.                        "); ")
  83.  
  84.             elif row[3] == "TRAFFIC":
  85.                 sql = ("INSERT INTO PADIAGDB.traffic ("
  86.                        "Domain,Receive_Time,Serial,Type,Threat_Content_Type,Config_Version,"
  87.                        "Generate_Time,Source_address,Destination_address,NAT_Source_IP,"
  88.                        "NAT_Destination_IP,Rule,Source_User,Destination_User,Application,"
  89.                        "Virtual_System,Source_Zone,Destination_Zone,Inbound_Interface,"
  90.                        "Outbound_Interface,Log_Action,Time_Logged,Session_ID,Repeat_Count,"
  91.                        "Source_Port,Destination_Port,NAT_Source_Port,NAT_Destination_Port,"
  92.                        "Flags,IP_Protocol,Action,Bytes,Bytes_Sent,Bytes_Received,Packets,"
  93.                        "Start_Time,Elapsed_Time,Category,Padding,Sequence_Number,Action_Flags,"
  94.                        "Source_Country,Destination_Country,cpadding,pkts_sent,pkts_received,"
  95.                        "session_end_reason,dg_hier_level_1,dg_hier_level_2,dg_hier_level_3,"
  96.                        "dg_hier_level_4,Virtual_System_Name,Device_Name,action_source )"
  97.                        ""
  98.                        "VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,"
  99.                        "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,"
  100.                        "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s"
  101.                        "); ")
  102.             elif row[3] == "SYSTEM":
  103.                 sql = ("INSERT INTO PADIAGDB.system ("
  104.                        "Domain,Receive_Time,Serial,Type,Threat_Content_Type,Config_Version,"
  105.                        "Generate_Time,Virtual_System,Event_ID,Object,fmt,id,module,Severity,"
  106.                        "Description,Sequence_Number,Action_Flags,dg_hier_level_1,"
  107.                        "dg_hier_level_2,dg_hier_level_3,dg_hier_level_4,Virtual_System_Name,"
  108.                        "Device_Name )"
  109.                        ""
  110.                        "VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,"
  111.                        "%s,%s,%s );")
  112.             else:
  113.                 continue
  114.  
  115.             try:
  116.                 cursor.execute('SET foreign_key_checks = 0')
  117.                 # Execute the SQL command
  118.                 r = cursor.execute(sql, row)
  119.  
  120.                 #Commit your changes in the database
  121.                 cursor.execute('SET foreign_key_checks = 1')
  122.                 db.commit()
  123.  
  124.  
  125.             except Exception as e:
  126.                 logging.exception(e)
  127.                 db.rollback()
  128.  
  129.     # disconnect from server
  130.     db.close()
  131.  
  132. #####################################################################
  133. # Main
  134. #####################################################################
  135. logging.basicConfig(level=logging.DEBUG, filename=LOGFILE)
  136. # # List of all gz files
  137. # gz_files = (gz for gz in glob.glob(os.path.join(GZ_DIR, '*.gz')))
  138. #
  139. # # Step 4: in loop, back to step 1 automatically for another gz files
  140. # for gz_file in gz_files:
  141. #     # Step 1
  142. #     with gzip.open(gz_file, 'rb') as in_file:
  143. #         s = in_file.read()
  144. #
  145. #         # store the uncompressed data
  146. #         sql_file = gz_file[:-3]
  147. #
  148. #         #Convert to csv
  149. #         sql_file= sql_file[:-4] + '.csv'
  150. #         with open(sql_file, 'wb') as out_file:
  151. #             out_file.write(s)
  152. #
  153. #     # Step 2: import to sql
  154. #     # Fill value for dbHostname, dbUser, dbPassword, databaseName
  155. #     import_sql(out_file,DB_HOST,DB_USER,DB_PASS,DB_NAME)
  156. #
  157. #     # Step 3: remove uncompresed file
  158. #     os.remove(sql_file)
  159. #
  160. #     # Step 4: in loop, back to step 1 automatically for another gz files
  161.  
  162. #####################################################################
  163. # Main
  164. #####################################################################
  165.  
  166. # List of all gz files
  167. gz_files = (gz for gz in glob.glob(os.path.join(GZ_DIR, '*.gz')))
  168.  
  169. # Loop through all gz files
  170. for gz_file in gz_files:
  171.     cmd = ['gz', 'a', 'Test.7z', 'Test', '-mx9']
  172.     subprocess.call(cmd)
  173.     # Step 1
  174.     with gzip.open(gz_file, 'rb') as in_file:
  175.         s = in_file.read()
  176.  
  177.     # store the uncompressed data
  178.     sql_file = gz_file[:-3]
  179.  
  180.     # Convert to csv
  181.     sql_file = sql_file[:-4] + '.csv'
  182.     with open(sql_file, 'wb') as out_file:
  183.         out_file.write(s)
  184.  
  185.     # Step 2: import to sql
  186.     import_sql(out_file, DB_HOST, DB_USER, DB_PASS, DB_NAME)
  187.  
  188.     # Step 3: remove uncompresed file
  189.     os.remove(sql_file)
  190.  
  191.     # Step 4: in
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement