Está en la página 1de 15

Asignatura Datos del alumno Fecha

Sistemas Operativos Apellidos: Fernández Hermo


10/12/2022
Avanzados Nombre: Uxío

Laboratorio individual: Programación de scripts en


Linux

Descripción de la actividad y pautas de elaboración

Escribir un script en bash que muestre cada cierto tiempo un menú en el que se
puedan obtener al menos las siguientes informaciones sobre el sistema:

 Obtener el espacio libre del disco.


 Obtener el tamaño ocupado por un determinado directorio y sus ficheros y
subdirectorios.
 Obtener el uso del procesador.
 Obtener el número de usuarios conectados.
 Obtener el número de usuarios conectados desde la última vez que se preguntó.

Para poder afrontar este laboratorio es necesario haber estudiado previamente


los temas sobre el Shell de Linux y la programación Shell.

Para poder realizar los ejercicios del laboratorio es necesario que tengas acceso a
un sistema operativo Linux en cualquier distribución, puesto que no se necesitan
herramientas especiales. Todos los sistemas Linux vienen equipados con un
intérprete de comandos. Puedes obtener, por ejemplo, la distribución de
Ubuntu,
© Universidad Internacional que(UNIR)
de La Rioja es completa y fácil de instalar.

1
Actividades
Consulta la información de esta distribución a través de las siguientes direcciones
web:
http://www.ubuntu.com/
Información de instalación: http://doc.ubuntu-es.org/Instalaci%C3%B3n

Se puede realizar también en un sistema operativo Windows con la herramienta


PowerShell, que también puede interpretar comandos Linux.

Objetivos

 Aprender a programar scripts en Linux.


 Aprender a desarrollar scripts resulta de vital importancia para poder administrar
eficientemente un sistema operativo.

Formato de entrega y extensión máxima: debe contener:

 Memoria explicativa en PDF de los scripts ejecutados con capturas de la salida de


los mismos (máximo 20 páginas, fuente Calibri 12 e interlineado 1,5).
 Incluir en la memoria las dificultades encontradas.
 Incluir en la memoria las referencias utilizadas. Las referencias se deben colocar
con normas APA.
 Los scripts y comandos utilizados.

© Universidad Internacional de La Rioja (UNIR)

2
Actividades
Rúbrica

Puntuación
Programación de scripts máxima Peso
Descripción
en Linux (valor real: 5 %
puntos)
Entrega memoria en PDF
Memoria explicativa explicando los resultados de los 5 50 %
comandos utilizados
Se muestran los comandos
Comandos utilizados con
utilizados en la memoria, junto 1 10 %
capturas
con sus capturas de pantalla
Menciona las dificultades
Dificultades 1 10 %
encontradas
Presenta las referencias
Referencias 2 20 %
bibliográficas con normas APA
Scripts Adjunto los scripts utilizados 1 10 %
10 100 %

© Universidad Internacional de La Rioja (UNIR)

3
Actividades
Antes de comenzar a desarrollar paso por paso el detalle de nuestro script, se
muestra a continuación un diagrama de flujo para tener una visión a alto nivel de su
funcionamiento:

a continuación, vamos a ir desarrollando poco a poco cada una de las partes del
programa anteriormente mostrado.

© Universidad Internacional de La Rioja (UNIR)

4
Actividades
1) Declaración de variables: para evitar que nuestro programa tenga los valores de
las opciones de texto “hardcodeadas” en el texto que mostramos al usuario, en su
lugar las creamos como variables de tipo texto que serán invocadas por nuestro
programa. Eso facilitará además el mantenimiento del script.
Para ello, al inicio del script declaramos las variables utilizadas. Tambien es en este
momento cuando creamos la variable “VALOR1” que será la variable de control
utilizada para identificar los valores de menú que selecciona el usuario

en este caso, inicializamos la variable VALOR1 a un valor 0 para que entre por
primera vez al bucle de control WHILE que se utilizará para pedir la opción al
usuario (explicado más en detalle en las próximas páginas).
Las variables tipo texto Opcion1/2/3/4/5 contienen cada una de las opciones de
menú, mientras que Opcion6 contiene el texto que indicará al usuario si quiere salir
del bucle.

© Universidad Internacional de La Rioja (UNIR)

5
Actividades
2) Bucle While: Lo siguiente que se puede apreciar en el script, es que a
continuación se inicia el bucle que estará preguntando al usuario por una de las
opciones hasta que finaliza.

Este bucle está compuesto de una estructura while []...do...done; donde:


1) While[]: verificará si la condición introducida se cumple, y si resulta
verdadera se procederá a ejecutar la sección “do”. En el caso de este script,
la validación que hemos creado es la siguiente: (Yasin, 2021)

de este modo, la condición resultará positiva (y por tanto se ejecutarán las


instrucciones del bucle) cuando el valor almacenado para la variable VALOR1 no
sea igual a 6. En caso de ser igual a 6, el programa no ejecutará las instrucciones
del bucle.
© Universidad Internacional de La Rioja (UNIR)

La dificultad en este punto, residía en ser capaz de especificar la condición de


desigualdad, dado que no se aceptaba la forma “<>”

6
Actividades
2) Do: en este caso, se ejecuta el core del script, que es preguntarle al usuario
que opciones desea realizar. Para ello, lo primero que sucede es que se le
muestra por pantalla al usuario los menús, para lo que se utiliza la sentencia
echo

como puede verse, se han utilizado 2 opciones de echo:


-e: para interpretar los saltos de linea “\n” de tal forma que las opciones se
muestren en distintas lineas
-n: para que el cursor no tenga salto de carro cuando el usuario vaya a
introducir el valor, y permanezca por tanto en la misma línea.
Finalmente, se utiliza la sentencia “read” para que lea el valor introducido
por el usuario, y lo almacene en la variable VALOR1 anteriormente creada.
Despues de que el usuario introduce el valor, se utiliza una sentencia
condicional de tipo case, para poder guiar el flujo del programa. En las
siguientes páginas se explica en detalle cada una de estas opciones

© Universidad Internacional de La Rioja (UNIR)

7
Actividades
1) Opcion1: después de mostrar al usuario que opción ha seleccionado, se
procede a ejecutar el comando df para mostrar los usuarios conectados. La
opción -h se utiliza para hacerlo “legible”.

A continuación una evidencia de como sería el resultado:


1) se muestra el menú de selección
2) El usuario introduce la opción 1
3) se muestra el espacio del sistema de ficheros. Los campos relevantes son
(Rinsitu, 2018)
 S-Ficheros: indica el nombre del sistema de ficheros
 Tamaño: indica el tamaño total de cada sistema de ficheros
 Usados: indica el espacio ocupado de ese sistema de ficheros
 Disp: es la diferencia entre el tamaño total y lo usado, que representa
el espacio libre.
 Uso%: similar al anterior, pero en porcentaje.

© Universidad Internacional de La Rioja (UNIR)

8
Actividades
2) Opción 2: en caso de que el usuario introduzca un 2 para seleccionar la
opción 2, el programa ejecutará esta sección de código:

despues de mostrar, nuevamente por pantalla la opción seleccionada, el


programa ejecutará el comando du para mostrar el tamaño de un directorio,
que se le pasa como parámetro (el directorio escritorio de un usuario, en
este caso). Las opciones -h y -a hacen que se muestre como “legible” (-h) y
tanto el tamaño de los ficheros como de los directorios (-a). A continuación

una imagen de como se vería esto:

© Universidad Internacional de La Rioja (UNIR)


nuevamente, despues de que el usuario selecciona la opción 2, se ejecuta el
comando du anteriormente descrito. Lo que se puede apreciar en esta
ejecución es, en la primer columna, el tamaño de cada fichero, y su nombre.
La última línea, se corresponde con el total del tamaño del directorio. En

9
Actividades
este caso, no hay subdirectorios anidados, pero con esta opción también se
podrían ver.
3) Opción 3: en caso de que se seleccione esta opción, se ejecutará la siguiente
sección de código:

en este caso, se utiliza el comando top para mostrar los procesos en


ejecución y su uso de CPU. Se utiliza la opción -o para ordenador los
procesos precisamente por esta columna para ver los procesos de mayor a
menos.
A continuación, puede verse el resultado de ejecutar esta opción, donde la
columna “PID” representa el ID del proceso, y la columna “%CPU” indica el
uso de CPU (en porcentaje) que utiliza.

© Universidad Internacional de La Rioja (UNIR)

10
Actividades
4) Opción 4: si el usuario selecciona la opción 4, se ejecutará la siguiente
sección de código:

en este caso, después de mostrar los mensajes de la opción seleccionada, se


ejecuta el comando w para mostrar los usuarios conectados. A continuación

como se ve el resultado de la ejecución:


como puede verse, en este caso solo está conectado un usuario (uxiofern).
La última parte de la ejecución crea una nueva variable llamada timestamp,
y que utiliza la función date para almacenar el instante de ejecución de esta
opción. Esta variable, será posteriormente en la opción 5 para saber cuando
fue la última vez que se preguntó por los usuarios conectados.
© Universidad Internacional de La Rioja (UNIR)
La dificultad en este caso reside en saber como almacenar el formato con
date, dado que la función last necesita los parámetros con un formato
específico (A., s.f.).

11
Actividades
5) Opción 5: la opción 5 permitirá al usuario saber que usuarios se han
conectado al sistema desde la última vez que se preguntó (opción 4). para
ello, se ha creado el siguiente código:

nuevamente, se crea otra variable timestamp_now que almacenará el


instante en el que se ejecuta este código.
A continuación, se utiliza la opción last con 2 opciones:
 -s: que permitirá saber a la instrucción last desde cuando se ha
ejecutado, y se le pasa el timestamp almacenado en la opción 4
 -t: que permitirá saber a la instrucción last hasta cuando ejecutarse, y
que se le pasa el timestamp almacenado en la opción 5.
De esta manera, definimos el intervalo de tiempo desde la última vez que se
preguntó (opción 4) hasta ahora (Debian, s.f.).

© Universidad Internacional de La Rioja (UNIR)

12
Actividades
A continuación una evidencia de esta ejecución:

en este caso, primero ejecutamos la opción 4, y a continuación la opción 5,


pero vemos que sale vacía la información, dado que entre ambas opciones
no se ha conectado nadie.
Esta opción tiene el problema que si no se ejecuta la opción 4
anteriormente, la opción 5 da un error. Una posible forma de solucionar
sería ejecutar el comando last sin niguna opción, y así se mostraría el
histórico de logeos de usuarios.

© Universidad Internacional de La Rioja (UNIR)

13
Actividades
6) Opción 6: la opción 6 simplemente es la opción que permite al usuario salir
del programa.

Cuando el case termina y vuelve a evaluar la condición del while, esta será
verdadera y el programa terminará. A continuación como se vería esto en
ejecución:

Aunque no es una opción en sí, el programa verifica si el usuario introduce


alguna opción inválida (por ejemplo, la 8). En este caso, se muestra un
mensaje de error indicándole que por favor introduzca una opción correcta:

© Universidad Internacional de La Rioja (UNIR)

14
Actividades
REFERENCIAS BIBLIOGRÁFICAS
A., D. (s.f.). Ubunlog. Obtenido de https://ubunlog.com/date-comando-conceptos-
opciones-basicos/
Debian. (s.f.). Obtenido de
https://manpages.debian.org/buster/util-linux/last.1.en.html
Rinsitu, J. (27 de Abril de 2018). Colaboratorio. Obtenido de
https://colaboratorio.net/javierinsitu/terminal/2018/du-y-df-nuestro-
espacio-en-disco-rapido-y-facil/
Yasin, A. (2021). LinuxHint. Obtenido de https://linuxhint.com/does-not-equal-sign-
bash/

© Universidad Internacional de La Rioja (UNIR)

15
Actividades

También podría gustarte