DUDA - Autoprocesamiento de logs


xrp

Miembro activo
Buenas, estudio teleco y en una clase estamos dando java, el caso es que todavía no me he puesto con ello y no tengo ni puta idea. Tengo que hacer una práctica y no se ni por donde empezar. Tengo nociones básicas de programación, sabría hacer el programa en python pero en java ni idea así que si alguien me puede echar un cable se lo agradecería. Me dan un archivo de logs muy largo que tiene esta forma:

127.0.0.1 - - [08/Nov/2016:17:07:02 +0000] "GET /css/base.css HTTP/1.1" 200 2094 "http://127.0.0.1/admin/login.php" "Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"
127.0.0.1 - - [08/Nov/2016:17:07:02 +0000] "GET /images/key.png HTTP/1.1" 200 974 "http://127.0.0.1/admin/login.php" "Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"
127.0.0.1 - - [08/Nov/2016:17:07:02 +0000] "POST /admin/index.php HTTP/1.1" 200 1022 "http://127.0.0.1/admin/login.php" "Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"
127.0.0.1 - - [08/Nov/2016:17:07:02 +0000] "GET /css/default.css HTTP/1.1" 200 1486 "http://127.0.0.1/admin/index.php" "Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"
10.1.1.142 - - [08/Nov/2016:10:33:24 +0000] "GET / HTTP/1.1" 200 974 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
10.1.1.142 - - [08/Nov/2016:10:33:24 +0000] "GET /css/default.css HTTP/1.1" 200 1486 "http://10.6.49.11/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
10.1.1.142 - - [08/Nov/2016:10:33:24 +0000] "GET /favicon.ico HTTP/1.1" 404 517 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
10.1.1.142 - - [08/Nov/2016:10:33:24 +0000] "GET /favicon.ico HTTP/1.1" 404 517 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
10.1.1.142 - - [08/Nov/2016:10:33:28 +0000] "GET / HTTP/1.1" 200 973 "http://10.6.49.11/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
10.1.1.142 - - [08/Nov/2016:10:33:31 +0000] "GET /post.php?id=2 HTTP/1.1" 200 1861 "http://10.6.49.11/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
10.1.1.142 - - [08/Nov/2016:10:33:31 +0000] "GET /10.1.1.56:55400 HTTP/1.1" 404 522 "http://10.6.49.11/post.php? id=2" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
127.0.0.1 - - [08/Nov/2016:17:07:04 +0000] "GET /post.php?id=1 HTTP/1.1" 200 715 "-" "Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"

Es bastante mas largo pero os hacéis una idea de la forma que tiene. Y tengo que filtrarlo para que el programa me devuelva algo como esto:

Direcciones IP:
10.1.1.136
10.1.1.132
10.1.1.131
10.1.1.26
10.1.1.142
Datos generales:
Primera Entrada: [07/Nov/2016:10:10:09] [08/Nov/2016:10:33:24]
10.1.1.136 [07/Nov/2016:10:10:09] [07/Nov/2016:10:58:01]
10.1.1.132 [07/Nov/2016:10:10:10] [07/Nov/2016:10:57:57]
10.1.1.131 [07/Nov/2016:10:10:52] [07/Nov/2016:10:57:04]
10.1.1.26 [08/Nov/2016:07:30:06] [08/Nov/2016:07:30:30]
10.1.1.142 [08/Nov/2016:10:33:24] [08/Nov/2016:11:00:53]
Total entradas globales:
1340
 

destapeman

FUCK PUSSYS, YES BADASS
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder
buuff

Lo que haría sería:
1º Una clase para recopilar los datos de los logs que les quieras pasar - nombre de la clase Recopilador por ejemplo.
2º Una clase para convertir en una cadena de caracteres (String) los datos que hayas pasado a Recopilador - nombre de la clase Transformador por ejemplo.
3º Una clase para comparar las cadenas String que haya sacado Transformador y añadirlas a las listas que necesites ( IPs, Generales, Globales....) - nombre de la clase Comparador por ejemplo.
4º Una clase que imprima los datos recopilados y clasificados por Comparador - nombre de la clase Impresor por ejemplo.

Eso a groso modo, se podría modular más, la clase Comparador podrías desmigajarla en Comparador-ips, Comparador-navegadores....por cada dato distinto que quieras sacar por ejemplo, ahí depende ya de como pienses, al fin y al cabo la programación es bastante personal.

Recomendación, modulalo todo lo que puedas porque te será mas fácil programarlo, y sobre todo corregir errores.
 
  • Like
Reacciones : HxckzLxb2