clase:daw:si:2eval:tema13
Diferencias
Muestra las diferencias entre dos versiones de la página.
| — | clase:daw:si:2eval:tema13 [2025/11/03 11:37] (actual) – creado - editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== 13. Scripts avanzados en Linux ====== | ||
| + | En este temas vamos a ver usa serie de órdenes que se usan concatenadas usando una tubería '' | ||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ===== grep ===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | |||
| + | <sxh bash> | ||
| + | #Mostrar la linea del usuario root del fichero ''/ | ||
| + | cat /etc/passwd | grep -E " | ||
| + | </ | ||
| + | <sxh bash> | ||
| + | #Filtrar los nombre de los ficheros | ||
| + | ls | grep -E " | ||
| + | </ | ||
| + | |||
| + | * Expresiones regulares | ||
| + | |||
| + | ^ Expresion ^ Significado ^ Ejemplo ^ Explicación Ejemplo ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | ===== cut ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | <sxh bash> | ||
| + | #Mostrar La 6º columna del fichero pero solo los que empiecen por " | ||
| + | cat /etc/passwd | grep " | ||
| + | </ | ||
| + | |||
| + | <sxh bash> | ||
| + | #Mostrar desde el 3º caracter hasta el 10º caracter del fichero pero solo los que empiecen por " | ||
| + | cat / | ||
| + | </ | ||
| + | |||
| + | <sxh bash> | ||
| + | #Mostrar desde el 3º caracter hasta el final del fichero pero solo los que empiecen por " | ||
| + | cat / | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== wc ===== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | <sxh bash> | ||
| + | #Contar el número de lineas del '' | ||
| + | cat fichero | wc -l | ||
| + | </ | ||
| + | |||
| + | |||
| + | <sxh bash> | ||
| + | #Contar el número de palabras del '' | ||
| + | cat fichero | wc -w | ||
| + | </ | ||
| + | |||
| + | <sxh bash> | ||
| + | #Contar el número de bytes del '' | ||
| + | cat fichero | wc -c | ||
| + | </ | ||
| + | |||
| + | <sxh bash> | ||
| + | #Contar el número de caracteres del '' | ||
| + | cat fichero | wc -m | ||
| + | </ | ||
| + | |||
| + | |||
| + | <note tip> | ||
| + | La diferencia entre contar bytes o caracteres es que en UTF-8 , a veces , un carácter son varios bytes. | ||
| + | |||
| + | <sxh bash> | ||
| + | echo -n a | wc -c | ||
| + | 1 | ||
| + | echo -n á | wc -c | ||
| + | 2 | ||
| + | echo -n a | wc -m | ||
| + | 1 | ||
| + | echo -n á | wc -m | ||
| + | 1 | ||
| + | |||
| + | </ | ||
| + | |||
| + | </ | ||
| + | ===== head ===== | ||
| + | Muestra las primeras lineas de un fichero. Por defecto son las 10 primeras. | ||
| + | |||
| + | \\ | ||
| + | |||
| + | * Mostrar solo las primeras 10 líneas de un fichero | ||
| + | <sxh bash> | ||
| + | cat fichero | head | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | * Mostrar solo las primeras 13 líneas de un fichero | ||
| + | <sxh bash> | ||
| + | cat fichero | head -13 | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== tail ===== | ||
| + | Muestra las últimas lineas de un fichero. Por defecto son las 10 últimas. | ||
| + | |||
| + | \\ | ||
| + | |||
| + | * Mostrar solo las últimas 10 líneas de un fichero | ||
| + | <sxh bash> | ||
| + | cat fichero | tail | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | * Mostrar solo las últimas 13 líneas de un fichero | ||
| + | <sxh bash> | ||
| + | cat fichero | tail -13 | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | |||
| + | |||
| + | ===== sed ===== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | <sxh bash> | ||
| + | #cambia hola por adios | ||
| + | cat fichero | sed ' | ||
| + | </ | ||
| + | <sxh bash> | ||
| + | #Borra la letra a | ||
| + | cat fichero | sed ' | ||
| + | </ | ||
| + | |||
| + | * [[https:// | ||
| + | <sxh bash> | ||
| + | #Borra la primera línea | ||
| + | cat fichero | sed 1d | ||
| + | </ | ||
| + | <sxh bash> | ||
| + | #Borra las tres primeras líneas | ||
| + | cat fichero | sed 1,3d | ||
| + | </ | ||
| + | <sxh bash> | ||
| + | #Borra la última línea | ||
| + | cat fichero | sed ' | ||
| + | cat fichero | sed \$d | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Ejercicios ===== | ||
| + | |||
| + | ==== Ejercicio 1 ==== | ||
| + | Haz un Script llamado " | ||
| + | |||
| + | Para probar el Script crea los siguientes usuarios: | ||
| + | * carlos | ||
| + | * josecarlos | ||
| + | * carlo | ||
| + | |||
| + | |||
| + | ==== Ejercicio 2 ==== | ||
| + | Haz un Script llamado " | ||
| + | El nombre completo del usuario " | ||
| + | |||
| + | |||
| + | ==== Ejercicio 3 ==== | ||
| + | Haz un script llamado '' | ||
| + | |||
| + | La información se obtendrá del fichero ''/ | ||
| + | |||
| + | |||
| + | ==== Ejercicio 4 ==== | ||
| + | Haz un Script llamado " | ||
| + | |||
| + | 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 " | ||
| + | |||
| + | |||
| + | ==== 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 " | ||
| + | |||
| + | ==== Ejercicio 8 ==== | ||
| + | Haz un Script llamado " | ||
| + | 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 " | ||
| + | |||
| + | Tendrá un único parámetro que deberá valer alguno de los siguientes: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | Deberás validar que se le pasa un argumento al script. | ||
| + | |||
| + | ==== Ejercicio 11 ==== | ||
| + | Haz un Script llamado " | ||
| + | * Cree sea carpeta | ||
| + | * Que ese usuario tenga permisos sobre esa carpeta | ||
| + | |||
| + | Deberás validar que se le pasa un argumento al script. | ||
| + | |||
| + | |||
| + | ==== Ejercicio 12 ==== | ||
| + | Modifica el ejercicio anterior para añadir un segundo parámetro optativo que sea " | ||
| + | |||
| + | |||
| + | ==== Ejercicio 13 ==== | ||
| + | Haz un Script llamado " | ||
| + | |||
| + | |||
| + | Deberás validar que se le pasa un argumento al script. | ||
| + | |||
| + | |||
| + | ==== Ejercicio 14 ==== | ||
| + | Dado un fichero llamado '' | ||
| + | |||
| + | NumFactura, | ||
| + | 1, | ||
| + | 2, | ||
| + | 3, | ||
| + | |||
| + | Y suponiendo que en linux existen los usuarios a los que hace referencia '' | ||
| + | |||
| + | Crea un script llamado " | ||
| + | * 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: | ||
| + | * IMPORTE_TOTAL: | ||
| + | * NOMBRE: Mostrará el nombre completo del cliente. El nombre se debe sacar del fichero ''/ | ||
| + | |||
| + | 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 [[https:// | ||
| + | |||
| + | * La máquina virtual debe tener la red en " | ||
| + | * Instalar el paquete plaquete: gnuplot-nox | ||
| + | * Crear la carpeta www | ||
| + | * Crear un fichero llamado " | ||
| + | * Iniciar el servidor web con la orden | ||
| + | <sxh bash> | ||
| + | sudo python3 -m http.server 80 & | ||
| + | </ | ||
| + | * Crea un fichero llamado " | ||
| + | * Haz un Script llamado " | ||
| + | * Descargar los datos de la estación de ozono atmosférica de Avda. Francia: [[http:// | ||
| + | * Genera el fichero con los datos de las fechas y el ozono | ||
| + | * generar la imagen " | ||
| + | * 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 | ||
| + | | ||
| + | {{: | ||
| + | |||
| + | ==== 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: | ||
| + | <sxh bash> | ||
| + | iconv -f ISO-8859-1 -t UTF-8 f1.txt > f2.txt | ||
| + | </ | ||
| + | |||
| + | Borrar la primera linea | ||
| + | <sxh bash> | ||
| + | cat f1.txt | sed 1d > f2.txt | ||
| + | </ | ||
| + | |||
| + | Generar un fichero a partir de Variables: | ||
| + | <sxh bash> | ||
| + | eval "echo \" | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
