Advertisement
pjmakey2

apache_log_parse

Nov 23rd, 2012
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.23 KB | None | 0 0
  1. """
  2. USAGE: Guarda los apache, con la cantidad de peticiones entrantes y salientes.
  3.  
  4. antes de usarlo formatear el log apache de la siguiente manera
  5. con el modulo io activado
  6. 190.121.168.159|-|-|2012/11/20 17:53:49|POST|/encuestas/user/encuestas/getEncuesta3rl=encuestas/getEncuesta3|200|13953|574|14398
  7.  
  8. el formato del log apache es
  9.  
  10. LogFormat "%h|%l|%u|%{%Y/%m/%d %H:%M:%S}t|%m|%U%q|%>s|%b|%I|%O" netipac
  11.  
  12. como lo que hace esto es muy boludo lo hacemos todo aqua sin nada de clases
  13.  
  14. el formato a leer es
  15.  
  16. 200.1.201.35|-|-|2012/11/20 17:58:44|GET|/cartera/vendedor/login?url=login|200|5657|639|6082
  17. """
  18.  
  19. import sys
  20. import MySQLdb
  21. import logging
  22. import optparse
  23. from datetime import datetime
  24.  
  25.  
  26. def read_request(**kwargs):
  27.     rq = kwargs.get('request')
  28.     conl = kwargs.get('conl')
  29.     fq = open(rq, 'r')
  30.     lines = fq.readlines()
  31.  
  32.     for  line in lines:
  33.  
  34.         dun = line.split('|')
  35.         dayf = datetime.strptime(dun[3], '%Y/%m/%d %H:%M:%S')
  36.         fecha = dayf.strftime('%Y/%m/%d')
  37.         hora = dayf.strftime('%H:%M:%S')
  38.         idu = '%s_%s_%s_%s_%s' % (dun[0].replace('.', ''),
  39.                                   fecha, hora, dun[8], dun[9].strip())
  40.  
  41.         data = ( idu, 'apache', dun[0],dun[5],dun[8], dun[9].strip(), dun[4],
  42.                  dun[6],dun[3]
  43.             )
  44.         if dayf.strftime('%Y%m%d') == datetime.now().strftime('%Y%m%d'):
  45.             cursor = conl.cursor()
  46.             sqli = """insert into logs_peti ( id, servidor_aplicacion, host, sitio, entrada, salida, peticiones, estado, tiempo) values
  47.                                    (%s, %s, %s, %s, %s, %s, %s, %s, %s)
  48.            """
  49.             try:
  50.                 cursor.execute(sqli, data)
  51.                 conl.commit()
  52.             except:
  53.                 pass
  54.  
  55.         # save_data(data=data, conl=conl)
  56.  
  57.  
  58. if __name__ == '__main__':
  59.     try:
  60.         conl = MySQLdb.connect(host='algun.host',
  61.                                user='xxx',
  62.                                passwd='XXXX',
  63.                                db='fantasmal')    
  64.     except Exception, e:
  65.         print e, 'ERROR en la conexion de la base de datos'
  66.         sys.exit(1)
  67.  
  68.     fff = '/var/log/httpd/log_personalizado.log'
  69.     read_request(request=fff,conl=conl)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement