Descripción: Script que permite sacar un Reporte del Sistema, para un Reporte de Procesos, para un Reporte de Usuarios .
#! /bin/bash if test $# -ge 1 then echo "Este Script no utiliza parametros" exit 0 else clear while true do echo " **********************************************" echo " * *" echo " * Seleccione una accion a realizar *" echo " * *" echo " **********************************************" echo " * *" echo " * Presione (A) para un Reporte del Sistema *" echo " * Presione (B) para un Reporte de Procesos *" echo " * Presione (C) para un Reporte de Usuarios *" echo " * Presione (X) para salir *" echo " * *" echo " **********************************************" read op clear #VARIABLES DE ENTORNO UTILIZADAS EN A) #Tamaño del File System expresado en Kbytes TAM_FS=`df -l --block-size=1024 | awk 'BEGIN{cant=0} {cant+=$2} END{print "Tamaño del file system: "cant}'` #Porcentaje del disco usado PORC_DISCO_USAD=`df -l | awk 'BEGIN{cant=0} {cant+=$5} END{print "Porcentaje del disco utilizado: "cant, "\tLibre: "100-cant}'` #Tamaño del directorio actual TAM_DIR_AC=`ls -l --block-size=1024 | awk 'BEGIN{cant=0} {cant+=$5} END{print cant}'` #Cantidad de archivos en el dir actua CANT_ARCH_DIR_AC=`ls -l | cut -f1 -d" " | grep ^-......... | awk 'END{print NR}'` #Cantidad de subdirectorios en el dir actual CANT_SUBDIR_AC=`ls -l | cut -f1 -d" " | grep ^d......... | awk 'END{print NR}'` #Fecha del reporte FCHA_REP=`date '+Fecha del reporte: %d/%m/%y'` #VARIABLES DE ENTORNO UTILIZADAS EN B) #Cantidad de procesos en ejecucion CANT_PROC_EJEC=`ps -aux | wc -l` #Tamanio total de la memoria TAM_TOT=`free -t | cut -f2 -d":" | cut -d" " -f7 | sort | awk 'END{print}'` #Porcentaje de memoria utilizada TAM_MEM_USA=`ps -aux | awk 'BEGIN{cant=0} {cant+=$4} END{print "Porcentaje de memoria utilizado: "cant, "\tLibre: "100-cant}'` #Uso de CPU USO_CPU=`ps -aux | awk 'BEGIN{cant=0} {cant+=$3} END{print "Uso de CPU: "cant}'` #Usuario que utiliza mayor cantida de memoria MEM_USU=`ps -aux | awk ' NR > 1 { vec[$1] +=$4} END { VAN=1 for (x in vec) if (VAN==1) {MAYOR=vec ; GRUPO=x; VAN=0} else if (MAYOR < vec ) {MAYOR=vec ; GRUPO=x;} print "El Usuario que usa mayor cantidad de memoria: " GRUPO }'` #Usuarios con mayor cantidad de procesos CANT_PROC=`ps -aux | awk ' NR >1 { vec[$1] +=1} END { BAN=1 for (x in vec) if (BAN==1) {MAYOR=vec ; GRUPO=x; BAN=0} else if (MAYOR < vec ) {MAYOR=vec ; GRUPO=x;} print "Usuario con mayor cantidad de procesos: " GRUPO " con " MAYOR " procesos" }'` #VARIABLES DE ENTORNO UTILIZADAS EN C) #Cantidad total de usuarios CANT_USER_TOT=`ypcat passwd | awk 'END{print NR}'` #Cantidad de usuarios logueados CANT_USER_LOG=`who | cut -f1 -d" " | sort | uniq | awk 'END{print NR}'` #El usuario con que lleva mas tiempo logueado USER_MAS_LOG=`who | awk '{ print $5 "\t"$1}' | sort | awk ' NR==1 ' | cut -f2` #COMIENZA EL MENU DE OPCIONES case $op in #EMPIEZA A EJECUTAR A A|a) echo " A)" echo " **********************************************************" echo " * Reporte del Sistema de Archivos *" echo " *--------------------------------------------------------*" echo " * $TAM_FS *" echo " * *" echo " * $PORC_DISCO_USAD *" echo " * *" echo " * Tamaño del directorio actual: $TAM_DIR_AC (Kbytes) *" echo " * *" echo " * Cantidad de archivos en el directorio actual: $CANT_ARCH_DIR_AC *" echo " * *" echo " * Cantidad de sub-directorios en el directorio actual: $CANT_SUBDIR_AC *" echo " *--------------------------------------------------------*" echo " * $FCHA_REP *" echo " **********************************************************" sleep 12 ;; #TERMINA DE EJECUTAR A #EMPIEZO A EJECUTAR B B|b) echo " B)" echo " ******************************************************************" echo " * Reporte de Procesos *" echo " *----------------------------------------------------------------*" echo " * Cantidad de procesos en ejecucion:$CANT_PROC_EJEC *" echo " * *" echo " * Tamaño total de la memoria:$TAM_TOT *" echo " * *" echo " * $TAM_MEM_USA *" echo " * *" echo " * $USO_CPU *" echo " * *" echo " * $MEM_USU *" echo " * *" echo " * $CANT_PROC *" echo " *----------------------------------------------------------------*" echo " * $FCHA_REP *" echo " ******************************************************************" sleep 12;; #TERMINO DE EJECUTAR B #EMPIEZO A EJECUTAR C C|c) echo " C)" echo " ******************************************************************" echo " * Reporte de Usuarios *" echo " *----------------------------------------------------------------*" echo " * Cantidad total de usuarios: $CANT_USER_TOT *" echo " * *" echo " * Cantidad de usuarios logueados: $CANT_USER_LOG *" echo " * *" echo " * El usuario que lleva mas tiempo logueado: $USER_MAS_LOG *" echo " *----------------------------------------------------------------*" echo " * $FCHA_REP *" echo " ******************************************************************" sleep 12;; #EMPIEZA A EJECUTAR X X|x) echo "Fin del programa" break sleep 1;; *) echo "opcion incorrecta" sleep 1;; esac clear done exit 0 fi
0 comentarios:
Publicar un comentario