Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added .github/.keep
Empty file.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/G6KlMxd-)
# Ejercicios de linux para iniciarse en el Mundo de DevOps

¡Bienvenido/a al ejercicio final de linux para iniciarse en el mundo de DevOps!
Expand Down
143 changes: 143 additions & 0 deletions soluciones/Solucion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
# EJERCICIO SEMANAL

## Enunciado:

Una forma de determinar la validez de una cuenta de usuario en linux es verificar si es propietaria de archivos y si es así, ver cuál fue la última fecha de modificación.
Realiza un script capaz de obtener la siguiente información sobre las cuentas:

◦ No tengan archivos.
◦ Los archivos hace 6 meses que no se modifican.
◦ Los archivos hace 1 año que no se modifican.
◦ Obtener las cuentas que cumplan el punto 1 o el 3.

- Cada apartado debe estar definido como una función (cuatro en total) dentro del script.
- A la hora de llamar el script, se le introducirá como parámetro el nombre de la función que se desea ejecutar.
- El output por pantalla debe mostrarse separado por comas, como en el ejemplo.

(Opcional)

- El propio script detectará si no se le está pasando un parámetro válido y te devolverá la lista de parámetros válidos.
- El script necesitará permisos de sudo para ejecutarse. En caso de no dárselos en el momento de ejecutarlo, que sea el propio script el que se los otorgue.

## Solución

Para empezar crearemos un script `.sh` el cual contendra todo el siguiente código:

### scriptUsuarios.sh

```script
#!/bin/bash

# Comprobacion de sudo

if [ "$EUID" -ne 0 ]; then
echo "Permisos de sudo no encontrados, ejecutando de nuevo con ellos."
exec sudo bash "$0" "$@"
fi

# Funcion cuentas sin archivos

sinarchivos() {
echo "Cuentas de usuarios sin archivos"
for user in $(cut -d: -f1 /etc/passwd); do
if [ -z "$(find / -user $user -xdev 2>/dev/null)" ]; then
echo -n "$user, "
count=$((count + 1))
fi
done
echo
echo
echo "Hay un total de $count usuarios sin ficheros"
echo
}

# Funcion cuentas con archivos que no se han modificado en 6 meses

sinmodificar_6meses(){
echo "Cuentas de usuarios sin modificar 6 meses"
for user in $(cut -d: -f1 /etc/passwd); do
if [ -z "$(find /-user $user -xdev -mtime +180 -print | grep -q .)" ];then
echo -n "$user, "
count=$((count + 1))
fi
done
echo
echo
echo "Hay un total de $count usuarios sin modificar durante 6 meses"
echo
}

# Funcion cuentas con archivos que no se han modificado en 1 año

sinmodificar_1anio(){
echo "Cuentas de usuarios sin modificar 1 año"
for user in $(cut -d: -f1 /etc/passwd); do
if [ -z "$(find /-user $user -xdev -mtime +360 -print | grep -q .)" ];then
echo -n "$user, "
count=$((count + 1))
fi
done
echo
echo
echo "Hay un total de $count usuarios sin modificar durante 1 año"
echo
}

# Funcion de cuentas que no tienen archivos o no se han modificado en un año

sinarchivos_sinmodificar1anio(){
for user in $(cut -d: -f1 /etc/passwd);do
if [ -z "$(find /-user $user -xdev > /dev/null 2>/dev/null || find / -user $user -xdev -mtime +360 -print | grep -q .)" ];then
echo -n "$user, "
count=$((count + 1))
fi
done
echo
echo
echo "Hay un total de $count usuarios sin archivos o sin modificar durante 1 año"
echo
}

# Ejecuta la función

case "$1" in
"sinarchivos")
sinarchivos
;;
"sinmodificar_6meses")
sinmodificar_6meses
;;
"sinmodificar_1anio")
sinmodificar_1anio
;;
"sinarchivos_sinmodificar1anio")
sinarchivos_sinmodificar1anio
;;
*)
echo "Parametro invalido. Los parametros validos son: sinarchivos, sinmodificar_6meses, sinmodificar_1anio, sinarchivos_sinmodificar1anio"
exit 1
;;
esac

```
Para ejecutar el script en la terminal prondremos el siguiente comando:

```bas
./scriptUsuarios.sh <Nombre_funcion>
```

### Capturas de pantalla

#### Parametro invalido

[![Captura-de-pantalla-2024-11-12-145207.png](https://i.postimg.cc/wvggSwnb/Captura-de-pantalla-2024-11-12-145207.png)](https://postimg.cc/QB427J8p)

#### Usuarios sin archivos

[![Captura-de-pantalla-2024-11-13-125104.png](https://i.postimg.cc/xdShCf5Q/Captura-de-pantalla-2024-11-13-125104.png)](https://postimg.cc/nX00StNS)