[1 punto] (Ejercicio de sed). Disponemos de una serie de ficheros en el formato titulo_-_autor.epub. Elaborar un comando basado en sed para que cambie los nombres de los ficheros al formato autor-titulo.epub. El comando tomará la forma:
comando1 | sed | comando3
Probar con ficheros.tar.gz, el resultado de la ejecución debe ser: resultados.tar.gz.[1 punto] (Ejercicio de sed) Disponemos de un fichero en el que aparecen los números del 1 al 500. Con el comando sed y una sola operación de sustitución reemplazar los números del 35-79 y del 235-249 por el mensaje de texto: "[El numero X no es valido]", siendo X el correspondiente número.
Probar con lista.txt y comprobar con el comando diff que la salida es resultado.txt.
[1 punto] (Ejercicio de comandos de procesamiento de texto) Disponemos de tres ficheros, numeros.txt, nombres1.txt y nombres2.txt organizados en líneas. Usando comandos de procesamiento de ficheros de texto (se puede usar awk) y tuberías, en una sola línea de comando, realizar secuencialmente las siguientes operaciones:
- leer los tres ficheros y producir como salida líneas de la forma "numero nombre1" si el correspondiente número de la línea es menor que 200 y "numero nombre2" en caso contrario.
- realizar la sustitución de caracteres a→e, b→f, ..., v→z, w→a, ..., z→d.
- ordenar alfabéticamente las líneas por el campo nombre.
- la salida del comando será tanto por pantalla como por fichero. El fichero de salida se almacenará en /tmp y su nombre será el del usuario que ejecuta el comando terminado en .txt.
- Ejecutar el comando con los ficheros: numeros.txt, nombres1.txt y nombres2.txt y comprobar con el comando diff que la salida coincide con resultados.txt.
[2 puntos] (Ejercicio de bash) Programar una calculadora en bash que permita realizar las operaciones aritméticas de suma, resta y multiplicación para números positivos con punto decimal. Para ello el programa determinará cuántos decimales tiene cada número, alineará los números añadiendo los ceros que sean necesarios, eliminará el punto decimal, realizará las operaciones con enteros y luego colocará el punto decimal en el resultado.
- El programa tomará como argumento la operación a realizar en la línea de comando o, en caso de que no se le proporcione, se lo pedirá al usuario. Este será un string de la forma "3.4+5.86".
- Como programas externos solo se permiten grep y sed (otros comandos como awk y bc no están permitidos).
- Utilizar por lo menos una función.
[1 punto] (Ejercicio de python) Escribir un script en python que testee el script anterior de bash. El script leerá un conjunto de operaciones de un fichero, ejecutará el programa anterior y comprobará el resultado. Imprimirá la operación a realizar, el resultado del script de bash, el resultado correcto y dirá si es acierto o fallo. Al final nos dirá el número de operaciones incorrectas.
- Utilizar por los menos una función.
- NOTA: considerar una precisión de 1e-13.
Usar el siguiente fichero: operaciones.txt
[1,5 puntos] (Ejercicio de bash) Realizar un programa en bash que lea el fichero /etc/passwd del ordenador y que para cada usuario nos diga si el directorio del usuario existe y en caso afirmativo nos dé la fecha de su última modificación.
- Se puede usar cualquier comando: sed, cat, awk, etc.
[2,5 puntos] (Ejercicio de python) Crear un generador/chequeador de contraseñas en python. Debe funcionar de dos modos:
[1
punto] Generador de contraseña aleatoria, opción -g. Genera una
contraseña aleatoria que cumpla los requisitos especificados más
adelante.
$ ./passgencheck.py -g
Ae%3rt5*
Trabajo adicional [0,5 puntos]: Añadir a nuestro script un chequeo adicional haciendo uso de python-cracklib y cracklib2 (tendréis que instalarlo en la máquina virtual).
Entrega:
Empaquetar los comandos y scripts desarrollados en un archivo .tar.gz (sin subdirectorios) y enviarlos por la USC virtual.