Enunciado:
Perteneces al cuerpo de Técnicos de Asistencia Tecnológica del Ministerio de Defensa, hace unas horas se ha producido un terremoto en el que se contabilizan numerosas pérdidas humanas y materiales. Junto a un hospital de campaña, se han instalado unas carpas provisionales donde un equipo de 25 técnicos informáticos van a llevar a cabo las labores de recogida de datos de los damnificados, con objeto de realizar una valoración adecuada de los daños físicos y materiales que hayan sufrido. Eres el Coordinador de operaciones tecnológicas y debes crear un servidor Linux contra el que van a trabajar los 25 técnicos a través de sus portátiles, cada uno con su cuenta de usuario Linux en él.
Apartado 2 (1p):
Realiza un script que cumpla los siguientes requisitos:
Antes de nada, el script debe crear automáticamente en el home de tu usuario un archivo de texto llamado
técnicos_preparados.txt y establecer los permisos 744 para este.
Debe mostrar por pantalla un menú con las siguientes opciones:
1) Crear grupos de técnicos
2) Crear usuarios técnicos
3) Añadir técnico a un grupo
4) Crear árbol de datos
5) Visualizar técnicos preparados
6) Realizar salvaguarda de datos
7) Salir
El menú debe estar construido y controlado con las estructuras adecuadas.
Cada una de las opciones debe llevar a cabo:
Apartado 3 (2p): Opción 1:Se solicitará al usuario que introduzca el nombre del grupo a crear. Hay que comprobar que el usuario ha introducido algo, si no indicamos error y volvemos al menú. Con el nombre del grupo, comprobamos si éste existe en el sistema, si no existe lo creamos. Si existe, lo indicamos y volvemos al menú.
Apartado 4 (2p): Opción 2:
Se solicitará al usuario que introduzca el nombre del usuario a crear. Hay que comprobar que el usuario ha introducido algo, si no indicamos error y volvemos al menú. Con el nombre del usuario, comprobamos si éste existe en el sistema, si no existe lo creamos. Si existe, lo indicamos y volvemos al menú. El nuevo usuario debe ser integrado en el grupo que se creó en la Opción 1.
Apartado 5 (3p): Opción 3:Se solicitará el nombre del usuario y el nombre del grupo en el que queremos insertar dicho usuario. Se han de comprobar ambos valores para ver si el usuario ha metido algo por teclado o no. Si el usuario y el grupo existen en el sistema, se lanzará la orden para integrar al usuario en dicho grupo. Si alguno de los dos no existe, indicaremos error y volveremos al menú.
Apartado 6 (2p): Opción 4:Se solicitará el nombre del usuario al que hay que crearle el árbol de directorios. Si existe en el sistema, crearemos en su /home las siguientes carpetas:
· Empresas_afectadas
· Familias_afectadas
· Patrimonio_afectado
· Decesos
Una vez comprobada la creación de dichas carpetas para ese usuario, se irá añadiendo al archivo de texto llamado técnicos_preparados.txt los nombres de cada uno de los usuarios a los que les estemos haciendo este tratamiento.
Apartado 7 (1p): Opción 5:Se accederá al archivo técnicos_preparados.txt y se visualizará en pantalla su contenido, de este modo podremos saber a qué usuarios se les ha creado el árbol de datos. El programa debe detenerse hasta que el usuario pulse una tecla para continuar.
Entonces, volverá al menú.
Apartado 8 (2p): Opción 6:
Para esta opción, hay que crear una carpeta dentro de la carpeta /root cuyo nombre será el mismo nombre de tu usuario y dentro de ella, otra con nombre salvaguarda_datos, en la que se volcará todo el contenido del /home de tu usuario.
Opción 7:
Salida del Script.
Una posible solución a este enunciado podría ser la siguiente:
sudo touch /home/$USERNAME/Escritorio/tecnicos_preparados.txt
sudo chmod 744 /home/$USERNAME/Escritorio/tecnicos_preparados.txt
function Crear_grupos()
{
while [ -z $grupo ]
do
read -p "Introduce el nombre del grupo:" grupo
done
echo "El grupo que has introducido es : " $grupo
cat /etc/group |grep -w $grupo
if [ $? -eq 0 ]
then
echo "El grupo existe en el sistema"
else
sudo addgroup $grupo
if [ $? -eq 0 ]
then
echo "El grupo se ha creado correctamente"
echo "Grupo: " $grupo " OK" >> home/$USERNAME/Escritorio/tecnicos_preparados.txt
else
echo "Error el grupo no se ha creado correctamente"
fi
fi
}
function Crear_usuarios()
{
while [ -z $usuario ]
do
read -p "Introduce el nombre del usuario:" usuario
done
cat /etc/passwd | grep -w $usuario
if [ $? -eq 0 ]
then
echo "El usuario existe en el sistema"
else
sudo adduser $usuario
if [ $? -eq 0 ]
then
echo "El usuario se ha creado correctamente"
echo "Usuario: "$usuario"...........................OK" >> home/$USERNAME/Escritorio/tecnicos_preparados.txt
else
echo "Error el usuario no se ha creado correctamente"
fi
fi
}
function nuevo_tecnico()
{
while [ -z $tecnico ]
do
read -p "Introduce el nombre del nuevo técnico: " tecnico
done
while [ -z $grupo_tecnico ]
do
read -p "Introduce el grupo para el nuevo ténico: " grupo_tenico
done
echo "El tecnico introducido es: " $tecnico " y el grupo: " $grupo_tecnico
echo "Intentando unir el técnico al grupo..."
#Comprobamos si el usuario y el grupo existen
cat /etc/passwd | grep -w $tecnico
if [ $? -eq 0 ]
then
existe_tecnico=1 #esta variable valdrá 1 si el tecnico existe
else
existe_tecnico=0 #esta variable valdrá 0 si no existe
fi
cat /etc/group | grep -w $grupo_tecnico
if [ $? -eq 0 ]
then
existe_grupo_tecnico=1 #esta variable valdrá 1 si el grupo existe
else
existe_grupo_tecnico=0 #esta variable valdrá 0 si no existe
fi
if [ $existe_tecnico -eq 1 ] && [ $existe_grupo_tecnico -eq 1 ]
then
#sudo adduser $tecnico $grupo_tecnico
sudo usermod -G $grupo_tecnico $tecnico
if [ $? -eq 0 ]
then
echo "El técnico ha sido integrado en el grupo correctamente"
else
echo "Error al integrar técnico en grupo"
fi
else
echo "Error, o el técnico no existe o el grupo tampoco"
fi
}
function Crear_arbol()
{
while [ -z $usuario ]
do
read -p "Introduce el nombre del usuario:" usuario
done
cat /etc/passwd | grep -w $usuario
if [ $? -eq 0 ]
then
echo "Ok, el usuario sí existe en el sistema"
if [ -d /home/$usuario ]
then
echo "Creando árbol de carpetas..."
sudo mkdir /home/$usuario/Empresas_afectadas
if [ $? -eq 0 ]
then
echo "Empresas_afectadas creada"
else
echo "Error Empresas_afectadas no creada"
fi
sudo mkdir /home/$usuario/Familias_afectadas
if [ $? -eq 0 ]
then
echo "Familias_afectadas creada"
else
echo "Error Familias_afectadas no creada"
fi
sudo mkdir /home/$usuario/Patrimonio_afectado
if [ $? -eq 0 ]
then
echo "Patrimonio_afectado creada"
else
echo "Error Patrimonio_afectado no creada"
fi
sudo mkdir /home/$usuario/Decesos
if [ $? -eq 0 ]
then
echo "Decesos creada"
else
echo "Error Decesos no creada"
fi
else
echo "La carpeta personal no existe, no se creará el árbol"
fi
else
echo "Error, el usuario no existe en el sistema"
fi
}
function Visualizar_tecnicos()
{
clear
echo "Mostrando los técnicos creados..."
cat /home/$USERNAME/tecnicos_preparados.txt
read
}
function Realizar_salvaguarda()
{
sudo mkdir /root/$USERNAME
if [ $? -eq 0 ]
then
echo "La carpeta $USERNAME se ha creado con éxito"
sudo mkdir /root/$USERNAME/salvaguarda_datos
# Esta creación habría que comprobarla
cp -r /home /root/$USERNAME/salvaguarda_datos
if [ $? -eq 0 ]
then
echo "Ok, salvaguarda realizada con éxito"
echo "Mostrando los datos recopilados..."
ls /root/$USERNAME/salvaguarda_datos
else
echo "Error al realizar salvaguarda de datos"
fi
else
echo "La carpeta $USERNAME no se ha creado con éxito"
fi
}
#...........................
# PROGRAMA PRINCIAL
#..........................
while [ "$opcion1" != "7" ]
do
clear
echo "******* MENÚ ********"
echo "1) Crear grupos de técnicos"
echo "2) Crear usuarios técnicos"
echo "3) Añadir técnico a un grupo"
echo "4) Crear árbol de datos"
echo "5) Visualizar técnicos preparados"
echo "6) Realizar salvaguarda de datos"
echo "7) Salir"
read -p "Introduce una opción:" -n1 opcion1
case $opcion1 in
1) Crear_grupos;;
2) Crear_usuarios;;
3) nuevo_tecnico;;
4) Crear_arbol;;
5) Visualizar_tecnicos;;
6) Realizar_salvaguarda;;
7) echo "" ;;
*) echo "Opción no válida";;
esac
done
echo "Gracias por utilizar este software"
exit 0