#este codigo esta explicado
#!/bin/bash
clear
eliminaUser() {
#hacemos un bucle leyendo la linea del archivo, cogemos el campo 1 y 3
for linea in $(cat /etc/passwd | cut -d":" -f1,3); do
id=$(echo $linea | cut -d":" -f2) #guardmos en una variable el id de la persona
if [ $id -lt 2000 ] && [ $id -ge 1000 ]; then #si la id esta entre 2000 y 1000
echo $(echo $linea | cut -d":" -f1) #mostrsmos por pantalla el nombre
fi
done
echo "Quin usuari vols eliminar?"
read user #pedimos el nombre del user
sudo deluser --force $user #eliminamos el usuario
if [ $? -eq 0 ]; then #si lo que retorna es igual a 0 (osea k se a eliminao)
echo "$user;delete;$(date +%D)" >> $1 #guardamos en el fichero el usuario, que hemos eliminado, y la fecha
else
exit 3;
fi
}
creaUser() {
sudo useradd $1 -u $2 -p $3 #creamos el usuario con los datos que nos han pasado $1=nombre 2=id $3 = Password $4=archivo
if [ $? -eq 0 ]; then #si a funcionado bien
echo "$1;add;$(date +%D)" >> $4 #guardamos en el archivo el nombre, que se a creado, y la fecha
else
exit 3;
fi
}
infoMes() {
for linea in $(cat $2); do #creamos un bucle que lea linea a linea el fichero pasado a la fucnion
mes=$(echo $linea | cut -d";" -f3 | cut -d"/" -f1) #almacenamos en una variable con el mes de la linea, primero separamos por
#por ; y cogemos la fecha, despues separamos por / y cogemos el mes
if [ $1 -eq $mes ]; then #comprobamos si el mes que hemos introducido por pantalla es gual al mes de la linea
echo $linea #si es igual, mostramos por pantalla la linea
fi
done
}
if [ -f $1 ] && [ $# -eq 1 ]; then #comprobamos que se nos haya enviado un fichero
echo "[1] Eliminació d’usuaris" #Creamos el menu
echo "[2] Crear usuaris massivament"
echo "[3] Accions de l’últim més"
echo "[4] Exit"
echo "Qué opción quieres?"
read opcion #guardamos en opcion un numero
case $opcion in #Ejecutamos los diferentes casos
1)
eliminaUser $1 #llamamos a la funcion eliminaUser
;;
2)
echo "Introduzca csv:"
read file #introducimos un fichero csv
numLinea=$(cat $file | wc -l) #variable de los numeros de linea wc-l dice el numero de lineas
for linea in $(cat $file | tail -n$(($numLinea -1))); do #tail -n muestra las ultim lineas dep del num. Muestra todo menos 1a #fila
nom=$(echo $linea | cut -d";" -f1) #guardamos en una variable cada parametro
id=$(echo $linea | cut -d";" -f2)
pw=$(echo $linea | cut -d";" -f3)
creaUser $nom $id $pw $1 #llamamos a la funcion por cada linea, pasandole los datos de cada fila
done
;;
3)
echo "Introduzca mes por pantalla en formato mm"
read mes
infoMes $mes $1
;;
4)
exit 0;
;;
*)
exit 3;
;;
esac
else
exit 1;
fi