Scripts para Proxmox: eliminar conjuntos de máquinas virtuales para un grupo de usuarios
Hace unos días, te explicábamos cómo Eliminar una cuenta de usuario con su conjunto de máquinas virtuales, mediante un script en Proxmox VE. Este artículo venía a ser la continuación de una serie que venimos publicando últimamente para automatizar algunas actividades en Proxmox VE.
Si aún no has leído esos artículos previos, te recomiendo que comiences por ellos. Son los siguientes:
-
Scripts para Proxmox: crear usuario con un conjunto de máquinas virtuales (parte 1).
-
Scripts para Proxmox: crear usuario con un conjunto de máquinas virtuales (parte 2).
-
Scripts para Proxmox: crear conjuntos de máquinas virtuales para un grupo de usuarios.
El artículo anterior nos alivia considerablemente la tarea de eliminar por completo una cuenta y todo su escenario de prácticas asociado, pero si tienes que eliminar todo un grupo de usuarios, por ejemplo los alumnos de una clase, la tarea sigue siendo bastante pesada.
De tosas formas, si te paras a pensar, podemos utilizar la misma estrategia que usamos para crear grupos de usuarios (el último artículo de la lista anterior), pero ahora para eliminarlos.
De hecho, podemos usar el mismo archivo de datos, con los nombres de las cuentas de usuario, que usábamos allí. Sin embargo, nada nos impide crear un archivo nuevo con las cuentas a eliminar, cuando no necesitemos eliminar la totalidad de un grupo.
La idea es crear un script que lea, uno a uno, la lista de usuarios y ejecute el script que ya hicimos, para eliminar su configuración individual (el que hemos mencionado al principio del artículo).
Una vez fijado nuestro objetivo, comencemos…
Por cierto, si has llegado hasta este artículo, pero aún no tienes instalado y configurado Proxmox VE puedes encontrar ayuda en los artículos que ya tenemos publicados en SomeBooks.es sobre este tema.
Contenido del script que elimina cada cuenta y con sus conjuntos de trabajo
En este caso, el script se llamará quitargrupo.sh y, como puedes imaginar, necesitará recibir como argumento el nombre del archivo con la lista de cuentas que vamos a eliminar.
Por lo tanto, el script comenzará comprobando que, efectivamente, recibe el argumento. Si no fuese así, mostraría un mensaje informativo y terminaría la ejecución. Será algo como esto:
if [ $# -ne 1 ]; then
echo "Sintáxis: $0 listadoDeAlumnos.txt"
echo "'listadoDeAlumnos.txt' es un archivo de texto"
echo "Cada línea tendrá IdAlumno"
exit
fi
Si el numero de argumentos es correcto, y por lo tanto no se ejecuta el contenido de la orden if, estaremos listos para comenzar a procesar las cuentas de usuario.
Actuaremos de un modo parecido a los artículos anteriores, leyendo el archivo con las cuentas de usuario, linea a línea.
Por cada línea que procesemos, llamaremos al script quitarusuario.sh, enviándole el nombre de la cuenta que hayamos leído para eliminarla, junto con su laboratorio de prácticas. En definitiva, algo como esto:
while read -r usuario
do
./quitarusuario.sh $usuario
done < "datos/$1"
De este modo, aprovechamos el trabajo que ya teníamos hecho, y simplificamos nuestra tarea de hoy.
En definitiva, el script completo nos quedaría como sigue, teniendo en cuenta que he añadido comentarios para identificar cada parte y un par de comandos echo para que el script vaya informando de dónde se encuentra en cada momento:
#!/bin/bash
#Sinataxis
if [ $# -ne 1 ]; then
echo "Sintáxis: $0 listadoDeAlumnos.txt"
echo "'listadoDeAlumnos.txt' es un archivo de texto"
echo "Cada línea tendrá IdAlumno"
exit
fi
#Utiliza el script limpiar.sh para eliminar una cuenta de usuario,
#el conjunto con su nombre y las máquinas virtuales asociadas
#a dicho conjunto
while read -r usuario
do
echo "Borrando cuenta $usuario"
echo "-------------------------------------------------"
./quitarusuario.sh $usuario
done < "datos/$1"
Crear el archivo del script
Como en ocasiones anteriores, usaremos el editor nano para crear el archivo:
nano /scripts/quitargrupo.sh
Y, cuando nos encontremos en su área de trabajo, copiaremos en su interior el contenido del listado anterior.
Una vez completada la tarea, volvemos a pulsar la combinación de teclas Ctrl + X para salir, y nos aseguramos de guardar los cambios.
Por último, no debemos olvidar cambiar los permisos del archivo que acabamos de crear, para que sea posible ejecutarlo. Lo conseguimos con la siguiente orden:
chmod 0700 /scripts/quitargrupo.sh
Comprobar el resultado final
Para comprobar que todo funciona como debe, comenzaremos situándonos en la ruta donde guardamos el script (en mi caso, la carpeta /scripts). Después, ejecutamos el script sin argumentos:
./quitargrupo.sh
De este modo nos asegurarnos de que muestra la pequeña ayuda que incluimos al principio.
Después, pasamos a ejecutarlo con el argumento. Usaremos el nombre del archivo que utilizamos en el artículo Scripts para Proxmox: crear conjuntos de máquinas virtuales para un grupo de usuarios. Así comprobaremos que los conjuntos que creamos de forma automática entonces, también se eliminan de forma automática ahora.
Quedará así:
./quitargrupo.sh alumnos.txt
Comprobaremos que, de forma inmediata, comienza a realizar la tarea prevista…
Cuando termine, volveremos a obtener el prompt de la consola…
Como es posible que hayas creado diferentes grupos, con diversos escenarios de prácticas, este método te permitirá eliminar cómodamente sólo aquellos que ya no vayan a ser utilizados. Incluso, como dijimos antes, puedes crear un archivo de texto para eliminar las cuentas y conjuntos solo de una parte de un grupo (imagina, por ejemplo, aquellos que hayan superado la actividad, o aquellos que hayan abandonado).
Como puedes imaginar, esto puede ahorrarte una cantidad de trabajo importante en tu día a día, cuando administras un servidor Proxmox VE que sea utilizando en un ambiente académico… Y no te preocupes, en futuros artículos iremos completando esta idea con nuevas funcionalidades, pero para el artículo de hoy, creo que ya es suficiente.
Espero que te haya resultado útil.