Herramientas de usuario

Herramientas del sitio


clase:daw:si:2eval:tema13

Tabla de Contenidos

¡Esta es una revisión vieja del documento!


13. Scripts avanzados en Linux

grep

#Mostrar la linea del usuario root del fichero ''/etc/passwd''
cat /etc/passwd | grep -E "^root:" 
#Filtrar los nombre de los ficheros
ls | grep -E "hola" 

  • 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

#Mostrar La 6º columna del fichero pero solo los que empiecen por "root".
cat /etc/passwd | grep "^root:" | cut -d ":" -f6

#Mostrar desde el 3º caracter hasta el 10º caracter del fichero pero solo los que empiecen por "root".
cat /etc/datos.txt | grep "^root:" | cut -c3-10

#Mostrar desde el 3º caracter hasta el final del fichero pero solo los que empiecen por "root".
cat /etc/datos.txt | grep "^root:" | cut -c3-

wc

#Contar el número de lineas del ''fichero''
cat fichero | wc -l

#Contar el número de palabras del ''fichero''
cat fichero | wc -w

#Contar el número de bytes del ''fichero''
cat fichero | wc -c

#Contar el número de caracteres del ''fichero''
cat fichero | wc -m

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

echo -n a | wc -c
1
echo -n á | wc -c
2
echo -n a | wc -m
1
echo -n á | wc -m
1

sed

#cambia hola por adios
cat fichero | sed 's/hola/adios/g' 
#Borra la letra a
cat fichero | sed 's/a//g' 

#Borra la primera línea
cat fichero | sed 1d 
#Borra las tres primeras líneas
cat fichero | sed 1,3d 
#Borra la última línea
cat fichero | sed '$d'
cat fichero | sed \$d

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 "grupo_usuario.sh" que dado el "id" de un usuario muestre el nombre de su grupo principal

Ejercicio 4

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 5

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 6

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

Ejercicio 7

ps y kill

  • Muestra todos los procesos del sistema
  • Ejecuta la orden "less" sobre un fichero cualquiera pero no acabes la orden
  • En otra terminal muestra los procesos y verás que está el proceso "less"
  • Haz que solo se muestre el pid y nombre del proceso de "less"
  • Ahora mata el proceso.

Ejercicio 8

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 9

Haz un Script llamado "process_info.sh" que dado el pid de un proceso muestre únicamente la orden de ese pid

Ejercicio 10

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 11

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

Ejercicio 12

Haz un script llamado "buscar.sh" que acepte como argumento el nombre de un fichero a buscar. La orden buscará ese fichero por todo el disco.

También ejecuta el Script de forma que toda su salida por consola se guarde en el fichero "salida.txt"

Ejercicio 13 (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

sudo python3 -m http.server 80 &

  • 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.
  • Desde Windows navega al servidor y veras los datos

Ejercicio 14 (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 15 (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:

iconv -f ISO-8859-1 -t UTF-8 f1.txt > f2.txt

Borrar la primera linea

cat f1.txt | sed 1d > f2.txt

Generar un fichero a partir de Variables:

eval "echo \"$(cat file.template)\"" > file.txt

clase/daw/si/2eval/tema13.1611913230.txt.gz · Última modificación: 2021/01/29 10:40 por admin