Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Función que comprueba que el archivo accesos.log existe y es normal.
- comprobarExistenciaAccesos()
- {
- if [ -f accesos.log ]; then #-f indica cierto si existe y es normal.
- echo "accesos.log existe"
- else
- echo "accesos.log no existe. Saliendo del programa"
- exit -1 #Si no existe salimos del programa.
- fi
- }
- #Función que comprueba que el archivo prohibidos.log existe y es normal.
- comprobarExistenciaProhibidos()
- {
- if [ -f prohibidos.log ]; then #-f indica cierto si existe y es normal.
- echo "prohibidos.log existe"
- else
- echo "prohibidos.log no existe. Saliendo del programa"
- exit -1 #Si no existe salimos del programa.
- fi
- }
- #Función que comprueba que el archivo accesos.log tiene permisos de lectura.
- comprobarPermisosAccesos()
- {
- if [ -r accesos.log ]; then #-r indica cierto si tiene permisos de lectura.
- echo "accesos.log tiene permisos de lectura"
- else
- echo "accesos.log no tiene permisos de lectura. Saliendo del programa"
- exit -1 #Si no tiene permisos de lectura salimos del programa.
- fi
- }
- #Función que comprueba que el archivo prohibidos.log tiene permisos de lectura.
- comprobarPermisosProhibidos()
- {
- if [ -r prohibidos.log ]; then #-r indica cierto si tiene permisos de lectura.
- echo "prohibidos.log tiene permisos de lectura"
- else
- echo "prohibidos.log no tiene permisos de lectura. Saliendo del programa"
- exit -1 #Si no tiene permisos de lectura salimos del programa.
- fi
- }
- #Función que a partir de los argumentos (nombres de usuarios) dados imprime el número de veces que dichos usuarios visitaron las webs prohibidas.
- funcionPrincipalAccesos()
- {
- if [ $# -gt 0 ]; then #Si el número de argumentos es mayor que 0(0 es el nombre del script).
- for i in $*; do #Recorremos todos los argumentos pasados en la ejecución del script (usuarios) y, para cada uno de ellos hacemos:
- for j in `more prohibidos.log`; do #Recorremos cada una de las páginas prohibidas.
- visitas=0 #Creamos la variable que contará el número de veces que un determinado usuario visita cada página prohibida.
- while read ii jj; do #Leemos cada línea de accesos.log y guardamos el nombre de usuario en ii y el nombre de la web en jj. A medida que leemos cada línea de prohibidos.log comprobamos que:
- if [[ $i == $ii && $j == $jj ]]; then #Si el nombre de usuario es igual al nombre del usuario de la línea de accesos.log y el nombre de la web prohibida coincide con el segundo campo del fichero accesos.log entonces:
- visitas=`expr $visitas + 1` #Incrementamos en una unidad el número de visitas para esa web con ese usuario determinado.
- fi #Finalizamos el if.
- done < accesos.log #Vamos leyendo con el while del archivo accesos.log.
- echo "El usuario $i ha visitado el sitio $j $visitas veces" #Imprimimos el número de veces que el usuario pasado por argumento visitó los sitios web prohibidos.
- done #Finalizamos el for de la lectura de accesos prohibidos.
- done #Finalizamos el for del recorrido de argumentos.
- else #Si el número de argumentos no es mayor que 0(0 es el nombre del script).
- visitasGlobales=0; #Declaramos la variable visitasGlobales que contará el número de visitas totales a las web prohibidas independientemente del usuario Como no tenemos parámetros, necesitamos saber los usuarios que hay en total. Para ello, cortamos la primera columna, ordenamos y con uniq hacemos que sólo salga un usuario de cada tipo sin duplicaciones.
- for i in `cut -f1 accesos.log | sort | uniq`; do #Aplicamos el for sobre los usuarios existentes sin duplicación gracias a la sentencia anterior.
- for j in `more prohibidos.log`; do #Recorremos cada una de las páginas prohibidas.
- visitas=0; #Creamos la variable que contará el número de veces que un determinado usuario visita cada página prohibida.
- while read ii jj; do #Leemos cada línea de accesos.log y guardamos el nombre de usuario en ii y el nombre de la web en jj. A medida que leemos cada línea de prohibidos.log comprobamos que:
- if [[ $i == $ii && $j == $jj ]]; then #Si el nombre de usuario es igual al nombre del usuario de la línea de accesos.log y el nombre de la web prohibida coincide con el segundo campo del fichero accesos.log entonces:
- visitas=`expr $visitas + 1` #Incrementamos en una unidad el número de visitas para esa web con ese usuario determinado.
- visitasGlobales=`expr $visitasGlobales + 1` #Incrementamos en una unidad el número de visitas globales.
- fi #Finalizamos el if.
- done < accesos.log #Vamos leyendo con el while del archivo accesos.log.
- echo "El usuario $i ha visitado el sitio $j $visitas veces" #Imprimimos el número de veces que el usuario pasado por argumento visitó los sitios web prohibidos.
- done #Finalizamos el for de la lectura de accesos prohibidos.
- done #Finalizamos el for del recorrido de argumentos.
- echo "El total de accesos prohibidos ha sido $visitasGlobales" #Imprimimos el número de accesos globales a las web prohibidas.
- fi
- }
- #Programa Principal
- #Primero, hacemos todas las comprobaciones en los archivos
- comprobarExistenciaAccesos
- comprobarExistenciaProhibidos
- comprobarPermisosAccesos
- comprobarPermisosProhibidos
- funcionPrincipalAccesos $* #A esta función le pasamos la lista de argumentos mediante $*
Add Comment
Please, Sign In to add comment