#!/bin/bash
#TODOS LOS SCRIPTS EN http://oposinf.blogspot.com/search/label/shellscript
#OPOSICIONES CUERPOS DOCENTES 2008
#EJERCICIO PRÁCTICO - PLANTEAMIENTO
#El ejercicio práctico se realizará bajo sistema operativo LINUX. Se podrá hacer uso del comando man.
#Elabora un script para llamado informe.sh que muestre información sobre el uso del sistema que realiza un determinado usuario.mEl shell-script tendra la siguiente sintaxis:
#informe.sh opcion [usuario]
#Las opciones pueden ser –u y –a. Si la opción que recibe es –u, deberá recibir como segundo argumento un nombre de usuario.
#Si el script ser ejecuta de la primera forma (-u usuario), deberá presentar un informe del usuario que se ha pasado por parámetro. En el informe deberán aparecer los siguientes datos:
#· Nombre del usuario.
#· Número de procesos que ha lanzado.
#· Nombre del primer proceso que lanzó.
#· Listado de todos los procesos que ha lanzado.
#· Número de directorios que tiene.
#· Número de ficheros regulares que tiene.
#· Uso del espacio en disco que ocupa.
#· Tanto por ciento de espacio en disco usado por el usuario.
function error {
echo "¡¡Horror!! Uso "$0" -[u|a] [usuario]"
exit
}
function numprocesos() {
echo "Contando procesos, $1..."
usuario=$1
numproc=`ps -U $usuario | wc -l`
echo "Número de procesos del usuario $usuario:$numproc"
}
function numprocesostotal() {
echo "Contando procesos totales"
usuario=$1
numproc=`ps | wc -l`
echo "Número de procesos total:$numproc"
}
function procesomasantiguo() {
echo "Buscando proceso más antiguo, $1..."
usuario=$1
ps -F -U $usuario | head -2 | tail -1 | awk '{print $11}'
}
function procesomasantiguototal() {
echo "Buscando proceso más antiguo total"
ps -F | head -2 | tail -1 | awk '{print $11}'
}
function listadoprocesos() {
echo "Listando procesos de usuario, $1..."
usuario=$1
ps -F -U $usuario
}
function listadoprocesostotal() {
echo "Listando procesos total"
ps -F
}
function numdirectorios() {
echo "Contando número de directorios, $1..."
usuario=$1
carpetausuario=`cat /etc/passwd | grep ^$usuario | cut -d: -f6`
#ls -ldr $carpetausuario/*
find $carpetausuario -type d -ls | wc -l
}
function numdirectoriostotal() {
echo "Contando número de directorios total"
carpetausuario="/home"
#ls -ldr $carpetausuario/*
find $carpetausuario -type d -ls | wc -l
}
function fichregulares() {
echo "Número de ficheros regulares, $1..."
usuario=$1
carpetausuario=`cat /etc/passwd | grep ^$usuario | cut -d: -f6`
find $carpetausuario -type f -ls | wc -l
}
function fichregularestotal() {
echo "Número de ficheros regulares total"
carpetausuario="/home"
find $carpetausuario -type f -ls | wc -l
}
function espacioendisco() {
echo "Espacio en disco, $1..."
usuario=$1
carpetausuario=`cat /etc/passwd | grep ^$usuario | cut -d: -f6`
du -sh $carpetausuario | awk {'print $1'}
}
function espacioendiscototal() {
echo "Espacio en disco total"
carpetausuario="/home"
du -sh $carpetausuario | awk {'print $1'}
}
function tantoporcientoendisco() {
echo "Tanto por ciento en disco, $1..."
usuario=$1
carpetausuario=`cat /etc/passwd | grep ^$usuario | cut -d: -f6`
du -sh $carpetausuario | awk {'print $1'}
ocupadocarpeta=`du -sh $carpetausuario | awk {'print $1'}`
#le quita la letra del final
ocupadocarpeta=`echo $ocupadocarpeta|sed 's/.$//'`
tamanodisco=`df -h | head -2 | tail -1 | awk {'print $2'}`
#le quita la letra del final
tamanodisco=`echo $tamanodisco | sed 's/.$//'`
echo "Ocupado carpeta:$ocupadocarpeta"
echo "Tamaño disco:$tamanodisco"
#expr no da decimales
#porcentajecarpeta=`expr $ocupadocarpeta / $tamanodisco`
#bc sí da decimales
porcentajecarpeta=$( echo "scale=2;$ocupadocarpeta/$tamanodisco" | bc)
porcentajecarpeta=$( echo "scale=2;$porcentajecarpeta*100" | bc)
echo "El porcentaje de la carpeta $carpetausuario sobre el tamaño total del disco es $porcentajecarpeta%"
}
function tantoporcientoendiscototal() {
echo "Tanto por ciento en disco total"
carpetausuario="/home"
du -sh $carpetausuario | awk {'print $1'}
ocupadocarpeta=`du -sh $carpetausuario | awk {'print $1'}`
#le quita la letra del final
ocupadocarpeta=`echo $ocupadocarpeta|sed 's/.$//'`
tamanodisco=`df -h | head -2 | tail -1 | awk {'print $2'}`
#le quita la letra del final
tamanodisco=`echo $tamanodisco | sed 's/.$//'`
echo "Ocupado carpeta:$ocupadocarpeta"
echo "Tamaño disco:$tamanodisco"
#expr no da decimales
#porcentajecarpeta=`expr $ocupadocarpeta / $tamanodisco`
#bc sí da decimales
porcentajecarpeta=$( echo "scale=2;$ocupadocarpeta/$tamanodisco" | bc)
porcentajecarpeta=$( echo "scale=2;$porcentajecarpeta*100" | bc)
echo "El porcentaje de la carpeta $carpetausuario sobre el tamaño total del disco es $porcentajecarpeta%"
}
#echo $#
if [[ $# -eq 0 ]]
then
error
elif [[ $# -gt 0 ]]
then
#Decir buenos días, nombre del usuario
#nombreusuario=`id -un`
#si el primer parámetro es -u
if [[ $1 == "-u" ]]
then
echo "Entrando en -u"
if [[ $2 == "" ]]
then
echo "No has introducido nombre de usuario. Saliendo del programa"
error
else #usuario correcto
nombreusuario=$2
echo $nombreusuario
if id $nombreusuario > /dev/null 2>&1
then
echo "Usuario existe. Comenzando proceso"
echo $nombreusuario
numprocesos $nombreusuario
procesomasantiguo $nombreusuario
listadoprocesos $nombreusuario
numdirectorios $nombreusuario
fichregulares $nombreusuario
espacioendisco $nombreusuario
tantoporcientoendisco $nombreusuario
else
echo "El usuario no existe."
error
fi
fi
elif [[ $1 == "-a" ]]
then
echo "Entrando en -a"
numprocesostotal
procesomasantiguototal
listadoprocesostotal
numdirectoriostotal
fichregularestotal
espacioendiscototal
tantoporcientoendiscototal
else
error
fi
else
error
fi
#TODOS LOS SCRIPTS EN http://oposinf.blogspot.com/search/label/shellscript
#OPOSICIONES CUERPOS DOCENTES 2008
#EJERCICIO PRÁCTICO - PLANTEAMIENTO
#El ejercicio práctico se realizará bajo sistema operativo LINUX. Se podrá hacer uso del comando man.
#Elabora un script para llamado informe.sh que muestre información sobre el uso del sistema que realiza un determinado usuario.mEl shell-script tendra la siguiente sintaxis:
#informe.sh opcion [usuario]
#Las opciones pueden ser –u y –a. Si la opción que recibe es –u, deberá recibir como segundo argumento un nombre de usuario.
#Si el script ser ejecuta de la primera forma (-u usuario), deberá presentar un informe del usuario que se ha pasado por parámetro. En el informe deberán aparecer los siguientes datos:
#· Nombre del usuario.
#· Número de procesos que ha lanzado.
#· Nombre del primer proceso que lanzó.
#· Listado de todos los procesos que ha lanzado.
#· Número de directorios que tiene.
#· Número de ficheros regulares que tiene.
#· Uso del espacio en disco que ocupa.
#· Tanto por ciento de espacio en disco usado por el usuario.
function error {
echo "¡¡Horror!! Uso "$0" -[u|a] [usuario]"
exit
}
function numprocesos() {
echo "Contando procesos, $1..."
usuario=$1
numproc=`ps -U $usuario | wc -l`
echo "Número de procesos del usuario $usuario:$numproc"
}
function numprocesostotal() {
echo "Contando procesos totales"
usuario=$1
numproc=`ps | wc -l`
echo "Número de procesos total:$numproc"
}
function procesomasantiguo() {
echo "Buscando proceso más antiguo, $1..."
usuario=$1
ps -F -U $usuario | head -2 | tail -1 | awk '{print $11}'
}
function procesomasantiguototal() {
echo "Buscando proceso más antiguo total"
ps -F | head -2 | tail -1 | awk '{print $11}'
}
function listadoprocesos() {
echo "Listando procesos de usuario, $1..."
usuario=$1
ps -F -U $usuario
}
function listadoprocesostotal() {
echo "Listando procesos total"
ps -F
}
function numdirectorios() {
echo "Contando número de directorios, $1..."
usuario=$1
carpetausuario=`cat /etc/passwd | grep ^$usuario | cut -d: -f6`
#ls -ldr $carpetausuario/*
find $carpetausuario -type d -ls | wc -l
}
function numdirectoriostotal() {
echo "Contando número de directorios total"
carpetausuario="/home"
#ls -ldr $carpetausuario/*
find $carpetausuario -type d -ls | wc -l
}
function fichregulares() {
echo "Número de ficheros regulares, $1..."
usuario=$1
carpetausuario=`cat /etc/passwd | grep ^$usuario | cut -d: -f6`
find $carpetausuario -type f -ls | wc -l
}
function fichregularestotal() {
echo "Número de ficheros regulares total"
carpetausuario="/home"
find $carpetausuario -type f -ls | wc -l
}
function espacioendisco() {
echo "Espacio en disco, $1..."
usuario=$1
carpetausuario=`cat /etc/passwd | grep ^$usuario | cut -d: -f6`
du -sh $carpetausuario | awk {'print $1'}
}
function espacioendiscototal() {
echo "Espacio en disco total"
carpetausuario="/home"
du -sh $carpetausuario | awk {'print $1'}
}
function tantoporcientoendisco() {
echo "Tanto por ciento en disco, $1..."
usuario=$1
carpetausuario=`cat /etc/passwd | grep ^$usuario | cut -d: -f6`
du -sh $carpetausuario | awk {'print $1'}
ocupadocarpeta=`du -sh $carpetausuario | awk {'print $1'}`
#le quita la letra del final
ocupadocarpeta=`echo $ocupadocarpeta|sed 's/.$//'`
tamanodisco=`df -h | head -2 | tail -1 | awk {'print $2'}`
#le quita la letra del final
tamanodisco=`echo $tamanodisco | sed 's/.$//'`
echo "Ocupado carpeta:$ocupadocarpeta"
echo "Tamaño disco:$tamanodisco"
#expr no da decimales
#porcentajecarpeta=`expr $ocupadocarpeta / $tamanodisco`
#bc sí da decimales
porcentajecarpeta=$( echo "scale=2;$ocupadocarpeta/$tamanodisco" | bc)
porcentajecarpeta=$( echo "scale=2;$porcentajecarpeta*100" | bc)
echo "El porcentaje de la carpeta $carpetausuario sobre el tamaño total del disco es $porcentajecarpeta%"
}
function tantoporcientoendiscototal() {
echo "Tanto por ciento en disco total"
carpetausuario="/home"
du -sh $carpetausuario | awk {'print $1'}
ocupadocarpeta=`du -sh $carpetausuario | awk {'print $1'}`
#le quita la letra del final
ocupadocarpeta=`echo $ocupadocarpeta|sed 's/.$//'`
tamanodisco=`df -h | head -2 | tail -1 | awk {'print $2'}`
#le quita la letra del final
tamanodisco=`echo $tamanodisco | sed 's/.$//'`
echo "Ocupado carpeta:$ocupadocarpeta"
echo "Tamaño disco:$tamanodisco"
#expr no da decimales
#porcentajecarpeta=`expr $ocupadocarpeta / $tamanodisco`
#bc sí da decimales
porcentajecarpeta=$( echo "scale=2;$ocupadocarpeta/$tamanodisco" | bc)
porcentajecarpeta=$( echo "scale=2;$porcentajecarpeta*100" | bc)
echo "El porcentaje de la carpeta $carpetausuario sobre el tamaño total del disco es $porcentajecarpeta%"
}
#echo $#
if [[ $# -eq 0 ]]
then
error
elif [[ $# -gt 0 ]]
then
#Decir buenos días, nombre del usuario
#nombreusuario=`id -un`
#si el primer parámetro es -u
if [[ $1 == "-u" ]]
then
echo "Entrando en -u"
if [[ $2 == "" ]]
then
echo "No has introducido nombre de usuario. Saliendo del programa"
error
else #usuario correcto
nombreusuario=$2
echo $nombreusuario
if id $nombreusuario > /dev/null 2>&1
then
echo "Usuario existe. Comenzando proceso"
echo $nombreusuario
numprocesos $nombreusuario
procesomasantiguo $nombreusuario
listadoprocesos $nombreusuario
numdirectorios $nombreusuario
fichregulares $nombreusuario
espacioendisco $nombreusuario
tantoporcientoendisco $nombreusuario
else
echo "El usuario no existe."
error
fi
fi
elif [[ $1 == "-a" ]]
then
echo "Entrando en -a"
numprocesostotal
procesomasantiguototal
listadoprocesostotal
numdirectoriostotal
fichregularestotal
espacioendiscototal
tantoporcientoendiscototal
else
error
fi
else
error
fi
No hay comentarios:
Publicar un comentario