UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

Tu entorno de trabajo en Linux

Actividades en el laboratorio

1. Gestión de directorios y obtención de información

Plan de trabajo

En la empresa SAUCEM S.L. de la que eres jefe de proyecto se trabaja por grupos. Cada grupo de trabajo debe realizar una serie de proyectos, elaborar un presupuesto, llevar a cabo un conjunto de actividades, etc. Para ello, cada grupo de trabajo debe organizarse estableciendo un conjunto de carpetas o directorios de manera estructurada, y ubicando correctamente sus ficheros en ellas. Así mismo, cada grupo de trabajo debe poder tener mecanismos para obtener información del sistema, y para eliminar algunas carpetas y ficheros cuando sea necesario.

Como jefe de grupo de trabajo en SAUCEM S.L. se te pide que realices una serie de comandos en Linux para crear, y gestionar las carpetas e información del sistema relacionado con tu grupo de trabajo. En concreto, tienes que realizar 3 sub-tareas, que se pasan a detallar a continuación. Es importante que los comandos que vayas ejecutando en cada sub-tarea los vayas poniendo en un fichero de texto, cada comando en una línea, pues al final deberás entregar dicho fichero:

  1. Creación de un conjunto de carpetas y ficheros. En esta tarea debes ejecutar una serie de comandos en Linux para la creación de un conjunto de directorios y ficheros con unos permisos concretos.

    1. Debes crear la estructura de carpetas o directorios que indica la figura, debiendo estar el directorio Grupo_Trabajo debajo de la ruta /home/teleco. Ejecuta la secuencia de comandos necesaria para ello, teniendo en cuenta que la localización inicial del directorio donde te encuentras en el sistema puede ser cualquiera y la secuencia debe funcionar en cualquier caso independientemente del directorio inicial donde te encuentres. Para todo ello, debes utilizar los comandos mkdir y cd. Otro requisito obligatorio es que tienes que utilizar el comando mkdir tanto pasándole una ruta absoluta en uno de los comandos como una relativa en otro de los comandos.

    2. A continuación, debes asignar los permisos adecuados a cada directorio, para que puedas controlar quien accede a dichos directorios y con qué permisos. Todos los directorios deberán tener permisos de lectura y ejecución para los miembros del mismo grupo en Linux, y además permisos de escritura para el propietario de los mismos, y ningún permiso para el resto. Así mismo hay una excepción a esto, para el directorio de Presupuesto, los permisos deben ser de lectura, escritura y ejecución para el propietario del mismo, y ningún permiso para el resto, ya que sólo al jefe de proyecto le estará permitido operar con los archivos de presupuesto. Realiza la secuencia de comandos necesaria para asignar todos estos permisos, teniendo en cuenta que la localización inicial del directorio donde te encuentras en el sistema puede ser cualquiera y la secuencia debe funcionar en cualquier caso independientemente del directorio inicial donde te encuentres. Para todo ello, debes utilizar los comandos chmod y cd. Otro requisito obligatorio es que tienes que utilizar el comando chmod tanto pasándole una ruta absoluta en uno de los comandos como una relativa en otro de los comandos.

    3. Seguidamente, debe crear un fichero descripcion.txt debajo del directorio P1 que incluya en su interior el texto Descripción del proyecto. Para ello, debe utilizar de manera obligatoria el comando echo y la redirección de salida.

    4. Copie el fichero descripcion.txt desde la carpeta P1 hacia las carpetas P2 y P3, de manera que también allí quede presente. Para ello debe utilizar el comando cp.

    5. Copie el fichero descripcion.txt también hacia el directorio de Presupuesto, y al directorio de Comunicacion utilizando el comando cp. A continuación cambie de nombre el fichero que está bajo el directorio Presupuesto para que se llame presupuesto.ax, utilizando el comando mv. Seguidamente reemplace completamente el texto del fichero por el siguiente texto: Fichero de presupuesto. Para ello, otro requisito es que debe utilizar obligatoriamente el comando echo y la redirección de salida.

    6. Mueve el fichero descripcion.txt que está en el directorio Comunicacion, hacia el directorio de Otros, y al mismo tiempo cámbielo de nombre para que se llame otros.txt. Para todo ello, utilice el comando mv. Seguidamente remplace completamente el texto del fichero por el siguiente texto: Otros asuntos. Para ello, otro requisito es que debe utilizar obligatoriamente el comando echo y la redirección de salida.

    7. Utilizando el comando echo y la redirección de salida, modifica los ficheros de “descripcion.txt” que hay debajo de los directorios P1, P2, y P3 , para que incluyan un espacio en blanco y el número 1, 2 o 3 respectivamente, anexados al texto que ya había en el fichero.

    8. Para todos los ficheros que se han ido creando, asigne los mismos permisos que los directorios que los contienen.

    9. Finalmente, ponga toda la secuencia de comandos que ha ido realizando en un fichero llamado creacion.sh con un editor de textos y guárdelo. Debe poner una línea por cada uno de los comandos y en el mismo orden que establecía este ejercicio. Además, añada en la primera línea del fichero el siguiente texto:

      #!/bin/bash

      Asigne permisos de ejecución al nuevo fichero creado. A este nuevo fichero que contiene una secuencia de comandos se le denomina script. Si ejecuta este fichero desde un terminal de comandos con ./creacion.sh, entonces se ejecutarán todos los comandos de una sóla vez en la secuencia establecida. Así, si en un futuro se quiere ejecutar la misma secuencia de comandos tan sólo tendrás que ejecutar el script de esa manera, en lugar de teclear todo comando a comando.

  2. Generación de información.En esta tarea deberá realizar una serie de comandos en Linux para la generación de información sobre la estructura de directorios creada, el contenido de los ficheros y otra información del sistema.

    1. En primer lugar ejecuta el comando date para que se muestre la fecha actual en el sistema.

    2. En segundo lugar, muestra el directorio actual en que te encuentras, que en general puede ser cualquiera. Para ello, utiliza el comando pwd.

    3. Muestra todos los procesos que se están ejecutando en el sistema Linux en ese momento. Para ello, utiliza el comando ps.

    4. Utilizando los comandos cd y ls, muestra la información de los ficheros y subdirectorios que hay debajo de cada una de las 8 carpetas del grupo de trabajo. La información debe mostrar al menos la fecha de creación de los ficheros o/y directorios, su tamaño, así como sus permisos.

    5. Utilizando el comando grep, muestre todos los ficheros que contienen el string de, que estén debajo de algún directorio de la estructura del grupo de trabajo.

    6. Finalmente, ponga toda la secuencia de comandos que ha ido realizando para la generación de información en un fichero llamado informacion.sh con un editor de textos y guárdelo. Debe poner una línea por cada uno de los comandos y en el mismo orden que establecía este ejercicio. Además, añada en la primera línea del fichero el siguiente texto:

      #!/bin/bash

      Asigne permisos de ejecución al nuevo fichero creado.

  3. Borrado de carpetas y ficheros. En esta tarea deberá realizar una serie de comandos en Linux para el borrado parcial de la estructura de directorios, así como de algunos ficheros.

    1. Borra completamente todos los ficheros y directorios que hay por debajo del directorio Proyectos, incluyendo el mismo directorio de Proyectos. Debes hacerlo únicamente utilizando el comando rm.

    2. Seguidamente borra el fichero que hay en la carpeta Otros utilizando el comando rm.

    3. Seguidamente borra el directorio Otros utilizando el comando rmdir. Nota que esto es posible porque ya no hay ningún fichero debajo del directorio Otros.

      Finalmente, ponga toda la secuencia de comandos que ha ido realizando para la generación de información en un fichero llamado borrado.sh con un editor de textos y guárdelo. Debe poner una línea por cada uno de los comandos y en el mismo orden que establecía este ejercicio. Además, añada en la primera línea del fichero el siguiente texto:

      #!/bin/bash

      Asigne permisos de ejecución al nuevo fichero creado.

¿Cuánto tiempo has dedicado a esta actividad? mins.

2. Procesado de los logs de las antenas de telefonía

Plan de trabajo

Se recibe en SAUCEM S.L. un fichero con los logs que se han recogido en las antenas de telefonía (que en adelante llamaremos celdas) de los alrededores de Leganés durante una semana. Su contenido es texto plano y en él están registrados todos los eventos de los teléfonos de cualquier operador a los que se les da cobertura. Cada línea del fichero contiene un evento, y la información se codifica con el siguiente formato:

Tienes que procesar este fichero con comandos Linux para obtener información detallada.

  1. Descomprime el fichero (lee sobre el comando gunzip).

  2. Visualiza su contenido por pantalla (lee sobre los comandos cat y more).

  3. Cuenta el número de líneas (y por tanto de eventos) que hay en el fichero (lee sobre el comando wc).

  4. Selecciona del fichero sólo aquellas líneas que tengan una palabra dada (lee sobre el comando grep).

  5. Se quiere generar un informe para cada celda que contenga sólo los eventos que se han producido en ella. Crea tantas carpetas como celdas para almacenar estos informes.

  6. Si se añade al final de un comando el símbolo > seguido del nombre de un fichero, los datos que produce se almacenan en ese fichero en lugar de mostrarse por pantalla. El fichero se crea de nuevo. Si en lugar de > se añade >> y el nombre de un fichero, el contenido del comando se añade al final del fichero dado.

    Utilizando esta funcionalidad y los comandos vistos hasta ahora, crea en cada subcarpeta un fichero que contenga solo los eventos que pertenecen a esa celda. Ejecuta todos los comandos desde la carpeta que contiene las subcarpetas en las que dejar los informes.

  7. En cada subcarpeta crea un fichero resumen.txt que contenga la siguiente información en líneas separadas: número de eventos en la celda, número de eventos para cada empresa, y número de eventos con operaciones de SMSs.

    Ejecuta la secuencia de comandos para la primera de las carpetas. Copia estos comandos en un fichero de texto utilizando el editor. Este fichero puede ahora ejecutarse múltiples veces por el intérprete mediante el comando:

    $ bash miscomandos

    Utilízalo para generar los ficheros resumen.txt en las carpetas restantes.

  8. Edita de nuevo el fichero de comandos. Añade la siguiente línea al comienzo del todo:

    #!/bin/bash

    Utiliza el comando chmod para darle permiso de ejecución a su propietario.

  9. Prueba a ejecutar el fichero como un programa mediante el comando:

    $ ./miscomandos

    A este tipo de ficheros que contienen comandos para el intérprete se les conoce como scripts.

  10. Prueba a ejecutar el script sin el prefijo ./ ¿Por qué crees que es necesario ponerlo?

¿Cuánto tiempo has dedicado a esta actividad? mins.