4 - Departamento de Informática Aplicada

Anuncio
E.U. de Informática
Departamento de Informática Aplicada
Examen Final de Administración de Sistemas Operativos
10 de junio de 2013
Apellidos ..................................................................................................................
Nombre .....................................................................................................................
Nº de Matrícula....................
EJERCICIO 4 (3,5 puntos)
Tiempo estimado: 60 m.
Eres el administrador de un servidor Linux en el Departamento IA. Bajo el directorio /home/aso
hay un directorio para cada alumno con el nombre de su login (correspondiente al número de
matrícula). Hay un máximo de tres prácticas por alumno, cada una en un fichero: p1.sh, p2.sh, y
p3.sh. Debes hacer un script que haga lo siguiente:
•
Crear en /backups/aso un directorio por cada práctica: aso-p1, aso-p2, aso-p3.
•
Llevar a cada directorio la práctica correspondiente de todos los alumnos que la tengan. El
nombre de la práctica en el directorio destino será: <login>.sh
•
Registrar para cada práctica qué alumnos no tienen la práctica hecha en un fichero llamado
/backups/aso/sin-entrega. En dicho fichero habrá una sección para cada práctica,
con un formato similar al siguiente:
Alumnos que no han realizado la práctica “p1”:
login1
login2
…
•
Una vez recogidas todas las prácticas, se hará un backup del directorio de cada práctica
con el comando tar. El fichero creado será un backup completo del directorio de la
práctica y se llamará p<x>.tgz (siendo <x> el número de práctica), y se almacenará en el
directorio /backups/aso.
NOTAS:
La implementación del script se realizará usando dos funciones: guardar_ficheros y
hacer_backup, que recibirán como parámetro la práctica concreta con que van a
trabajar.
El directorio /home/aso debe existir y no estar vacío para que el script funcione bien. El
directorio /backups/aso deberá crearse en el script.
El script deberá hacer las comprobaciones necesarias para que no se produzcan fallos.
Es importante la especificación correcta de las rutas de los directorios de trabajo.
#!/bin/bash
# Funcion guardar_ficheros: $1 - Nombre de la práctica
function guardar_ficheros
{
mkdir $destino/aso-$1
echo "Alumnos que no han realizado la practica $1:" >> $destino/sin-entrega
for mat in $(ls $origen) ; do
if [ ! -f $origen/$mat/$1.sh ] ; then
echo $mat >> $destino/sin-entrega
else
cp $origen/$mat/$1.sh $destino/aso-$1/$mat.sh
fi
done
}
# Funcion hacer_backup: $1 - Nombre de la práctica
function hacer_backup
{
tar czf $destino/$1.tgz $destino/aso-$1
}
# PROGRAMA PRINCIPAL
origen=/home/aso
destino=/backups/aso
if [ ! -d $origen ] ; then
echo "No existe directorio con las practicas" ; exit 1
fi
alumnos=$(ls $origen)
if [ "$alumnos" == "" ] ; then
echo "No hay alumnos" ; exit 2
fi
if [ ! -d $destino ] ; then
mkdir –p $destino
fi
touch $destino/sin-entrega
practicas="p1 p2 p3"
for prac in $practicas
do
guardar_ficheros $prac
hacer_backup $prac
done
Descargar