educación, informática y demás

Actividad 13 – Bash shell script

A continuación se plantean tres ejercicios sobre shell script en bash. Trata de solucionarlos por tu cuenta con los conocimientos que tienes.

Si te encuentras atascado, consulta la documentación proporcionada sobre shell scripts en bash, consulta páginas de manual de comandos, etc.

Si no eres capaz de solucionar el problema con el que te encuentras, usa el vídeo con la solución hasta que resuelvas el problema concreto que te impide avanzar. Una vez resuelto, pausa el vídeo y continua por tu cuenta.

Cuando hayas terminado el ejercicio, puedes visualizar el vídeo para comprobar la solución propuesta.

01 – copyFiles.sh

Crea un script llamado copyFiles.sh. El script recibirá tres parámetros obligatorios en el siguiente orden: la ruta de un directorio origen, ruta de un directorio destino y el nombre de un usuario.

  1. Crea una función llamada error que reciba por parámetro un mensaje de error. La función mostrará en pantalla el mensaje pasado y terminará la ejecución del script con un valor de retorno 1.
  2. Comprueba que el usuario que está ejecutando el script es root. Si no es root, muestra un mensaje de error apropiado y termina con valor de retorno de error.
  3. Comprueba que se han pasado los tres parámetros obligatorios: origen, destino y usuario. Si no se ha pasado alguno muestra un mensaje de error adecuado y termina con valor de retorno de error.
  4. Asigna los valores de los parámetros pasados a variables con nombres significativos.
  5. Comprueba que el la ruta del directorio origen apunta a un directorio y existe. Si no es así, deberás mostrar un mensaje de error adecuado y terminar con un valor de retorno de error.
  6. Comprueba que el la ruta del directorio destino apunta a un directorio y existe. Si el directorio no existe deberás crearlo y establecer como propietario del directorio al usuario.
  7. Comprueba que el nombre del usuario que se ha proporcionado es el de una cuenta de usuario del sistema. Si no existe, muestra un mensaje de error apropiado y termina la ejecución del script.
  8. Recorre los ficheros del directorio origen. Para cada fichero en el directorio origen:
    1. Si el fichero es un fichero normal:
      1. Copia el fichero del directorio origen al directorio destino.
      2. Establece como propietario del fichero destino el usuario pasado por parámetro.
      3. Cambia los permisos para que los otros no puedan realizar ninguna operación sobre el fichero copiado.
    2. Si el fichero es un directorio, muestra la cadena “[D] – ” seguida del nombre del fichero.
    3. Si el fichero es un fichero de bloque, muestra la cadena “[B] – ” seguida del nombre del fichero.
    4. En cualquier otro caso mostrará un mensaje indicando que es un fichero desconocido seguido del nombre del fichero.

02 – showFile.sh

Crea un script llamado showFile.sh

  1. El script deberá solicitar al usuario que inserte por teclado la ruta de un fichero y leer la entrada en una variable llamada fichero.
  2. Mientras el usuario inserte algún valor en la ruta se repetirá el siguiente proceso: El script mostrará información del fichero pasado-
    1. Si no existe ningún fichero con dicha ruta, mostrará un mensaje indicándolo. Si existe, mostrará la ruta del fichero y la información extendida de permisos del fichero o directorio, no de su contenido.
    2. Si es un fichero, mostrará su contenido por pantalla utilizando el comando adecuado. Si es un directorio mostrará su contenido por pantalla utilizando el comando adecuado. Si es otro tipo de fichero, mostrará un mensaje advirtiendo que es otro tipo de fichero seguido de su nombre.
    3. Mostrará si tenemos permiso de lectura, escritura y acceso o ejecución.
    4. Una vez mostrada la información volverá a pedir al usuario que inserte una nueva ruta de fichero repitiéndose el proceso mientras se inserte un valor por teclado.

03 – myOp.sh

Crea un script llamado myOp.sh que reciba un único parámetro con la operación a realizar.

  1. Si no se pasa parámetro, se debe mostrar un mensaje de error y salir.
  2. En caso de que el parámetro sea:
    • una a, se mostrará el nombre del usuario actual.
    • una b, se mostrará la ruta del directorio de trabajo.
    • una c, los procesos en ejecución en todo el sistema.
    • una d, los usuarios conectados al sistema.
    • una e, la ruta del directorio personal del usuario actual.
    • Una f, la línea del fichero de cuentas de usuario del usuario actual.
    • Una g, La fecha y hora actual.
    • Para cualquier otro valor se mostrará la opción pasada y un mensaje indicando que es una opción desconocida.