Examen final (contenidos de la 3ª evaluación) 1º DAI
Alumno: ____________________________________________________________
Sección 1ª (Teórico-práctica)
1.- Describe para qué sirven los ficheros /etc/fstab, /etc/inittab y /etc/passwd
El archivo /etc/fstab contiene líneas donde se indica qué dispositivo se debe montar, el lugar donde montarlo, así como el sistema de archivos y una serie de opciones. Por tanto, sirve para indicar qué dispositivos se deben montar durante el arranque del sistema (con la opción auto) y, además, facilita el montaje del resto (noauto) ya que para hacerlo sólo debemos indicar al comando mount el dispositivo a montar; el resto de parámetros lo toma de este fichero.
El archivo /etc/inittab es el fichero de configuración del programa init, por tanto sirve para indicar a dicho proceso qué demonios debe ejecutar y cuál es el nivel de arranque por defecto (entre otras cosas)
El archivo /etc/passwd contiene la lista de usuarios dados de alta en el sistema, el grupo al que pertenecen, la ruta a su directorio Home y la shell que usarán. Es por tanto el fichero que determina quién puede acceder al sistema de forma legítima y qué puede hacer una vez ha accedido.
2.- Indica las acciones a seguir para que, cada vez que arranque un sistema Linux, monte una partición ntfs con Windows XP, que es la primera partición del segundo disco duro IDE. Tiene que hacerlo con permisos de lectura y escritura.
Se deberá añadir una líne al fichero /etc/fstab con, al menos, la siguiente información:
/dev/hdb1 /Windows ntfs rw,auto 0 0
3.- Seña la los comandos que emplearías para:
a) Ver el tamaño que ocupa /tmp
du -sh /tmp
b) Montar un disquete en /mnt
mount -t vfat /dev/fd0 /mnt
c) Cambiar el nombre al directorio /srv/www por /srv/w3
mv -f /srv/www/ /srv/w3/
d) Vaciar completamente /tmp
rm -Rf /tmp/*
Sección 2ª ./Script Se puntuará hasta cinco puntos {recuerda la importancia de los comentarios}
Realiza un script que, por medio de un menú, nos informe de:
-
Cuántos ficheros de dispositivo tipo carácter hay en /dev.
-
Cuáles son y cuánto ocupan las carpetas de los perfiles de usuario.
-
Cree un archivo de texto en Documents con la siguiente información (es un ejemplo, deberá mostrar los datos reales.:
Usuario: Ruta al perfil: Tamaño:
Pepe /home/josecarlos 238M
Angel /home/angeldp 2G
root /root 65M
-
Finaliza el script
#!/bin/bash
#
# Autor: angeldp
#
# Script que, por medio de un menú, permitirá
# A) Saber cuántos ficheros de dispositivo tipo carácter hay
# B) Ver cuáles son y lo que ocupan los perfiles de usuario
# C) Crear un informa con esa información
# El menú contemplará la posibilidad de finalización y
# mostrará un mensaje indicando si se introdujo una opción
# no permitida.
#
# Dado que las opciones B y C son iguales y sólo
# cambia la salida (por pantalla o a un fichero)
# crearé una función para hacerla y su salida
# se redireccionará donde proceda.
#
#
function perfiles () {
# Guardo la lista de usuarios en USUARIOS
USUARIOS=`more /etc/passwd | cut -d":" -f1`
#Muestro una cabecera para la salida
echo -e "USUARIO:ttRuta al Perfil:ttTamaño:"
echo -e "___________________________________________________________"
# Hago un bucle para cada USUARIO
for USUARIO in $USUARIOS
do
# Obtengo la ruta al perfil de cada uno
HOGAR=`more /etc/passwd | grep ^${USUARIO}: | cut -d":" -f6`
#Y el tamaño de cada perfil si existe
if [ -d $HOGAR ]
then
TAMANHO=`du -sh $HOGAR 2> /dev/null | cut -f1 `
else
continue
fi
# Sólo queda escribir la línea:
echo -e "${USUARIO}ttt${HOGAR}tt${TAMANHO}"
done
}
# Dentro de un bucle para que se ejecute hasta que se
# pulse una q (o una Q) muestro el menú:
#
while [ "${OPCMENU}" != "q" ] && [ "${OPCMENU}" != "Q" ]
do
clear
echo 'Bienvenido al ejercicio del examen'
echo -e "nIndique una de las siguientes opciones"
echo -e "ntAtLe dirá el nº de ficheros de dispositivo"
echo -e "tttipo carácter que hay en /dev"
echo -e "ntBtLe informa sobre los perfiles de usuario"
echo -e "ntCtPermite guardar esa información en un archivo"
echo -e "nPulse q para finalizar.n"
read -n 1 -p "Su opción: " OPCMENU
#
# Por medio de un case controlaré cuál fue la opción indicada
#
case $OPCMENU in
"a" | "A" )
# Si pulsó A contaré el número de entradas de /dev
# que comienzan por "c" (también se podría hacer
# por medio del test -c fichero y un contador)
#
VALOR=`ls -lAR /dev | grep ^c | wc -l`
echo -e "ntHay $VALOR dispositivos de tipo carácter en /dev"
read -sn 1 -p "pulse para volver al menú" BASURA;;
#
"b" | "B" )
#
# Si pulsó B llamaré a la función que muestra
# los perfiles
#
perfiles
read -sn 1 -p "pulse para volver al menú" BASURA;;
#
"c" | "C" )
#
# Si pulso C llama a la función, pero redirijo su salida a
# un fichero log en Documents e informo de ello
#
perfiles > $HOME/Documents/logexamen
echo "Se ha procesado la tarea"
echo "En $HOME/Documents/logexamen está el resultado."
read -sn 1 -p "pulse para volver al menú" BASURA;;
#
"q" | "Q" )
clear
exit;;
* )
#
# Si pulsa una opción no permitida le enseño a usar un menú.
#
echo "Sólo son opciones válidas 'a', 'b', 'c' o 'q'"
read -sn 1 -p "pulse para volver al menú" BASURA;;
esac
done