13. Scripts avanzados en Linux

grep

Ejemplos prácticos de grep y egrep

Unix: Expresiones regulares

grep con expresiones regulares

Expresiones regulares

Expresion	Significado	Ejemplo	Explicación Ejemplo
^	Inicio de linea	^pepe
$	Final de línea	juan$
[abc]	Algunos de los caracteres que hay dentro	[aeiou]	Que contenga alguna vocal
.	Cualquier caracter	p.p	Que tenga una p , cualquier cosa y otra p
[^a]	Que no sea al caracter de dentro	p[^a]p	Que tenga una p , que no sea una "a" y otra p
*	Que se repite de 0 a infinitas veces	pa*p	Que tenga una p , cero o infinitas "a" y otra p
+	Que se repite de 1 a infinitas veces	pa*p	Que tenga una p , 1 o infinitas "a" y otra p
{n,m}	Que se repite entre n y m veces	pa{3,10}p	Que tenga una p , entre 3 o 10 "a" y otra p
{n}	Que se repite entre n veces	pa{3}p	Que tenga una p , tres "a" y otra p

cut

Unix: Uso del comando cut

Ejemplos comando CUT

wc

El comando wc

La diferencia entre contar bytes o caracteres es que en UTF-8 , a veces , un carácter son varios bytes.

sed

Reemplezar texto con sed

Borrar lineas con sed

Ejercicios

Ejercicio 1

Haz un Script llamado "home.sh" que tendrá como único parámetro el "login" de un usuario y mostrará por pantalla su carpeta home.

Para probar el Script crea los siguientes usuarios:

carlos

josecarlos

carlo

Ejercicio 2

Haz un Script llamado "nombre_usuario.sh" que dado el "login" de un usuario muestre el texto:

El nombre completo del usuario "pepe" es "Jose Cano"

Ejercicio 3

Haz un script llamado cache_cpu.sh que muestre el tamaño de la cache del procesador en MB y GB

La información se obtendrá del fichero /proc/cpuinfo

Ejercicio 4

Haz un Script llamado "memoria.sh" que muestre lo siguiente por pantalla:

La memoria total del sistema es de 255908 kB
La memoria libre del sistema es de 69936 kB

Y ahora modificalo par que salga en MB

La memoria total del sistema es de 255 MB
La memoria libre del sistema es de 69 MB

Ejercicio 5

Haz un script llamado "numusers.sh" que muestre por pantalla el número de usuarios del sistema

Ejercicio 6

Haz un Script que muestre el siguiente mensaje:

El numero de procesos del sistema es 42

Cambiando obviamente el 42 por el Nº EXACTO de procesos del sistema.

Ejercicio 7

Haz un Script llamado "process_info.sh" que dado el pid de un proceso muestre únicamente el comando que lazó el proceso de ese pid

Ejercicio 8

Haz un Script llamado "pcpu.sh" que dado el PID de un proceso muestre el siguiente texto:

El % de uso del proceso con PID 3456 es 45

Sabiendo que para mostrar el % de uso de CPU en la lista de procesos se usa pcpu. Y obviamente se substituye el 3456 por el PID que se pasa como parámetro y el 45 por el % de uso real de la CPU de ese proceso.

Ejercicio 9

Haz un Script que dado un PID de un proceso:

Si la prioridad (nice) es menor que 0 que muestre:

Prioridad alta

Si la prioridad (nice) es 0 que muestre

Prioridad normal

Si la prioridad (nice) es mayor que 0 que muestre:

Prioridad baja

Deberás validar que se le pasa un argumento al script.

Ejercicio 10

Haz un Script llamado "grupo_usuario.sh" que dado el "id" de un usuario muestre el nombre de su grupo principal

Deberás validar que se le pasa un argumento al script.

Ejercicio 11

Haz un Script llamado "crear_home.sh" que dado el login de un usuario busque cual es su carpeta home y:

Cree sea carpeta

Que ese usuario tenga permisos sobre esa carpeta

Deberás validar que se le pasa un argumento al script.

Ejercicio 12

Haz un Script llamado "info.sh"

Tendrá un único parámetro que deberá valer alguno de los siguientes:

TAMANYO_MEMORIA_RAM: el programa deberá mostrar el tamaño de la RAM en MB

TAMANYO_MEMORIA_LIBRE_RAM: el programa deberá mostrar la cantidad de memoria libre de la RAM en MB

TAMANYO_CACHE_CPU: el programa deberá mostrar el tamaño de la cache de la CPU en MB

Deberás validar que se le pasa un argumento al script.

Ejercicio 13

Modifica el ejercicio anterior para añadir un segundo parámetro optativo que sea "KB", si está este segundo parámetro, la información de mostrará en "KB"

Ejercicio 14

Dado un fichero llamado facturas.txt con el siguiente formato:

NumFactura,fecha_factura,base_imponible,iva,loginCliente
1,2019/09/01,1300,21,cdiaz
2,2018/03/21,700,13,jcano
3,2020/01/15,700,21,vperez

Y suponiendo que en linux existen los usuarios a los que hace referencia facturas.txt

Crea un script llamado "info_facturas.sh" que haga lo siguiente:

El primer parámetro siempre será el número de la factura

El segundo parámetro puede valer alguno de los siguientes

ANYO_FACTURA : Mostrará el año de la factura

BASE_IMPONIBLE: Mostrará el valor de la base imponible

IMPORTE_TOTAL: Mostrará el valor de la base imponible mas el % de IVA de la base imponible.

NOMBRE: Mostrará el nombre completo del cliente. El nombre se debe sacar del fichero /etc/passwd

Deberás validar que se le pasan 2 argumentos al script y que el segundo de ello tiene un valor válido.

Ejercicio 15 (OPTATIVO)

Servidor web con la calidad del aire de la ciudad

Se va a crear un servidor web que muestre en tiempo real la calidad del aire de la ciudad

Para ver la gŕafica se usará el programa "GNU Plot". Se puede ver un ejemplo es Plotting Time Series Data with Gnuplot

La máquina virtual debe tener la red en "adaptador puente"

Instalar el paquete plaquete: gnuplot-nox

Crear la carpeta www

Crear un fichero llamado "index.html" que muestre una imagen llamada "ozono.png"

Iniciar el servidor web con la orden

Crea un fichero llamado "ozono.gnuplot" para generar la imagen con gnuplot

Haz un Script llamado "calidad_aire.sh" que genere una imagen llamada "ozono.png" mediante los datos reales de contaminación de la Avd de Francia.

Descargar los datos de la estación de ozono atmosférica de Avda. Francia: Portal Transparencia y Datos Abiertos Valencia: Medio ambiente. Se usa la orden wget

Genera el fichero con los datos de las fechas y el ozono

generar la imagen "ozono.gnuplot"

Desde Windows navega al servidor y veras los datos

Ejercicio 16 (OPTATIVO)

Modifica el ejercicio anterior para mostrar también la gráfica del Óxidos de nitrógeno (NOx) y dióxido de nitrógeno (NO2)

Ejercicio 17 (OPTATIVO)

Haz un Script, llamado calida_aire_png.sh que generará la gráfica de un parámetro de la calidad del aire. La gráfica debe mostrar el nombre de la zona, lo que está mostrando y las unidades. (tal y como hemos visto en las anteriores gráficas) Acepte como argumentos:

La zona de donde se en los datos

1 para Universidad Politécnica

3 para Molí del Sol

4 para Pista de silla

5 para Viveros

6 para Avenida de Francia

7 para Viveros

El tipo de medida que deseas mostrar en la gráfica.

SO2

As

BaP

Benceno

Cd

CO

Ni

NO

NO2

NOx

Ozono

Pb

Pb

PM1

PM10

PM2,5

Ruido

SO2

SO2

Tolueno

Veloc.

Xileno

El último parámetro será el nombre del fichero a generar

Transformar a utf-8:

Borrar la primera linea

Generar un fichero a partir de Variables: