Directorios y proporciones obtenidas. Faltan Flags

parent 75075733
...@@ -6,8 +6,9 @@ class Cesta: ...@@ -6,8 +6,9 @@ class Cesta:
self.directorios = directorios self.directorios = directorios
self.flags = None self.flags = None
# Se obtienen los directorios aquellos que cumplen el umbral # Se obtienen los directorios aquellos que cumplen el umbral
def obtenerDirectorios(registros): def obtenerDirectorios(registros, umbral):
directorios = [] directorios = []
contadores = [] contadores = []
...@@ -17,17 +18,36 @@ def obtenerDirectorios(registros): ...@@ -17,17 +18,36 @@ def obtenerDirectorios(registros):
directorios.append(r.url) directorios.append(r.url)
contadores.append(1) contadores.append(1)
else: else:
pos = contadores.index(r.url) pos = directorios.index(r.url)
contadores[pos] += 1 contadores[pos] += 1
# Sacamos aquellas que no superan el umbral directorios, contadores = quitarExcluidos(directorios, contadores, umbral)
umbral = int(len(registros) * 5 / 1000)
return directorios, contadores
# Se quitan los directorios que no vamos a incluir
def quitarExcluidos(directorios, contadores, umbral):
excluidos = []
# Indicamos aquellas que no superan el umbral
for i in range(len(contadores)):
if contadores[i] < umbral:
excluidos.append(i)
# Las sacamos de las listas resultado en orden
sacados = 0
excluidos.sort()
for i in excluidos:
directorios.pop(i - sacados)
contadores.pop(i - sacados)
sacados += 1
return directorios, contadores return directorios, contadores
# Se obtiene la cesta transformada final # Se obtiene la cesta transformada final
def obtenerCestaTransformada(registros, directorios): def obtenerCestaTransformada(registros, directorios):
cesta = [] cesta = []
return cesta return cesta
\ No newline at end of file
...@@ -6,10 +6,11 @@ RUTA_ARCHIVO = "../access_log_Aug95_reducido" ...@@ -6,10 +6,11 @@ RUTA_ARCHIVO = "../access_log_Aug95_reducido"
E_SPIDERING = True E_SPIDERING = True
EXTENSIONES_ADMITIDAS = [] EXTENSIONES_ADMITIDAS = []
EXTENSIONES_NOADMITIDAS = [] EXTENSIONES_NOADMITIDAS = []
UMBRAL_DIRECTORIOS = 0.5 UMBRAL_SESIONES = 1800
FACTOR_UMBRAL = 0.5
def printRegistro(registros):
def printRegistro(registros):
print("Resultados: ") print("Resultados: ")
informe = ( informe = (
" - Registro {} -\nHost Remoto: {}\nFecha: {}\nMetodo de Petición: {}\nURL: {}\nProtocolo: {}\nStatus Code: {}\n" " - Registro {} -\nHost Remoto: {}\nFecha: {}\nMetodo de Petición: {}\nURL: {}\nProtocolo: {}\nStatus Code: {}\n"
...@@ -17,43 +18,49 @@ def printRegistro(registros): ...@@ -17,43 +18,49 @@ def printRegistro(registros):
) )
i = 0 i = 0
for r in registros: for reg in registros:
i += 1 i += 1
print(informe.format(i, r.hostRemoto, r.fecha, r.metodoPeticion, r.url, r.vProtocolo, print(informe.format(i, reg.hostRemoto, reg.fecha, reg.metodoPeticion, reg.url, reg.vProtocolo,
r.statusCode, r.volumenTransf, r.marcaTiempo, r.idUsuario, r.idSesion) reg.statusCode, reg.volumenTransf, reg.marcaTiempo, reg.idUsuario, reg.idSesion)
) )
def printDirectorios(d, num_dir, num_reg):
def printDirectorios(d, cont, num_dir, num_reg):
print("Directorios más solicitados: ") print("Directorios más solicitados: ")
barra = "="
informe = ( informe = (
" - VALOR {} -\nDirectorio: {}\nP (%): {}\n Cuenta: {}\nProporción: {}\n" " - VALOR {} -\nDirectorio: {}\nP(%): {}\n Cuenta: {}\nProporción: [{}]\n"
) )
barra = "*"
# Se imprime el total de directorios incluidos
total = 0
for suma in cont:
total += suma
barra *= total
print(informe.format("TOTAL", " ", '%.2f' % (total * 100 / num_reg), total, barra))
# Se imprimen todos los directorios
for i in range(num_dir): for i in range(num_dir):
barra += barra c = cont[i]
print(informe.format("", float(num_dir * 100 / num_reg), num_dir, barra)) barra = "=" * c
for di in d: print(informe.format(i + 1, d[i], '%.2f' % (c * 100 / num_reg), c, barra))
barra = "*"
c = cont[d.index(di)]
for i in range(c):
barra += barra
print(informe.format(di.url, float(num_dir * 100 / num_reg), c, barra))
def printCestaTransformada(c): def printCestaTransformada(c):
return return
# Se crean los registros, identificando usuarios y sesiones y se muestran # Se crean los registros, identificando usuarios y sesiones y se muestran
r = obtenerRegistros(RUTA_ARCHIVO, E_SPIDERING, EXTENSIONES_ADMITIDAS, EXTENSIONES_NOADMITIDAS) r = obtenerRegistros(RUTA_ARCHIVO, E_SPIDERING, EXTENSIONES_ADMITIDAS, EXTENSIONES_NOADMITIDAS, UMBRAL_SESIONES)
num_reg = len(r) num_reg = len(r)
printRegistro(r) printRegistro(r)
# Se obtienen los directorios con contadores y la cesta # Se obtienen los directorios con contadores y la cesta
umbral = int(num_reg * UMBRAL_DIRECTORIOS) umbral = int(num_reg * FACTOR_UMBRAL / 100)
d, cont = obtenerDirectorios(r) d, cont = obtenerDirectorios(r, umbral)
num_dir = len(d) num_dir = len(d)
printDirectorios(d, num_dir, num_reg) printDirectorios(d, cont, num_dir, num_reg)
# Obtiene cesta transformada y la muestra # Obtiene cesta transformada y la muestra
cesta = obtenerCestaTransformada(r, d) cesta = obtenerCestaTransformada(r, d)
printCestaTransformada(cesta) printCestaTransformada(cesta)
...@@ -3,7 +3,7 @@ from idsUsuarioSesion import identificaciones ...@@ -3,7 +3,7 @@ from idsUsuarioSesion import identificaciones
# Lee el fichero log # Lee el fichero log
def obtenerRegistros(ruta, espidering, extensionesAdmitidas, extensionesNoAdmitidas): def obtenerRegistros(ruta, espidering, extensionesAdmitidas, extensionesNoAdmitidas, umbral):
ret = leerLog(ruta, extensionesAdmitidas, extensionesNoAdmitidas) ret = leerLog(ruta, extensionesAdmitidas, extensionesNoAdmitidas)
# Compruebo si hay que hacer el e-Spidering # Compruebo si hay que hacer el e-Spidering
...@@ -11,7 +11,7 @@ def obtenerRegistros(ruta, espidering, extensionesAdmitidas, extensionesNoAdmiti ...@@ -11,7 +11,7 @@ def obtenerRegistros(ruta, espidering, extensionesAdmitidas, extensionesNoAdmiti
ret = eSpidering(ret) ret = eSpidering(ret)
print("Procesados ", len(ret), "registros") print("Procesados ", len(ret), "registros")
return identificaciones(ret) return identificaciones(ret, umbral)
# Obtengo los registros # Obtengo los registros
......
# Asignamos un umbral como el de EPA para asignar nuevas sesiones a los usuarios
UMBRAL_SESIONES = 1800
# Identifica a los usuarios con un unico ID para cada usuario # Identifica a los usuarios con un unico ID para cada usuario
def identificaciones(registros): def identificaciones(registros, umbral):
idsUsados = [] idsUsados = []
cont = 0 cont = 0
...@@ -18,11 +14,11 @@ def identificaciones(registros): ...@@ -18,11 +14,11 @@ def identificaciones(registros):
else: # Si no, simplemente se agrega el id del que ya disponía else: # Si no, simplemente se agrega el id del que ya disponía
reg.idUsuario = idsUsados.index(ip) + 1 reg.idUsuario = idsUsados.index(ip) + 1
return ordenaRegistros(registros) return ordenaRegistros(registros, umbral)
# Se ordenan los registros segun los usuarios y su marca de tiempo # Se ordenan los registros segun los usuarios y su marca de tiempo
def ordenaRegistros(registros): def ordenaRegistros(registros, umbral):
tam = len(registros) tam = len(registros)
for i in range(tam): for i in range(tam):
...@@ -39,11 +35,11 @@ def ordenaRegistros(registros): ...@@ -39,11 +35,11 @@ def ordenaRegistros(registros):
registros[i] = reg2 registros[i] = reg2
registros[j + i] = reg1 registros[j + i] = reg1
return identificacionSesiones(registros) return identificacionSesiones(registros, umbral)
# Identifica las sesiones de los usuarios # Identifica las sesiones de los usuarios
def identificacionSesiones(registros): def identificacionSesiones(registros, umbral):
tam = len(registros) tam = len(registros)
registros[0].idSesion = 1 registros[0].idSesion = 1
...@@ -53,7 +49,7 @@ def identificacionSesiones(registros): ...@@ -53,7 +49,7 @@ def identificacionSesiones(registros):
# Si se supera el umbral o son diferentes usuarios se crea nueva sesion # Si se supera el umbral o son diferentes usuarios se crea nueva sesion
dif = reg2.marcaTiempo - reg1.marcaTiempo dif = reg2.marcaTiempo - reg1.marcaTiempo
if dif > UMBRAL_SESIONES or reg1.idUsuario is not reg2.idUsuario: if dif > umbral or reg1.idUsuario is not reg2.idUsuario:
reg2.idSesion = reg1.idSesion + 1 reg2.idSesion = reg1.idSesion + 1
else: # Si no se asigna la sesion antigua else: # Si no se asigna la sesion antigua
reg2.idSesion = reg1.idSesion reg2.idSesion = reg1.idSesion
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment