CodeGym /Cursos /Docker SELF /Procesamiento de datos de texto y actualización del siste...

Procesamiento de datos de texto y actualización del sistema

Docker SELF
Nivel 8 , Lección 6
Disponible

Procesamiento de datos de texto y actualización del sistema

1. Procesamiento de datos de texto

Hoy recopilaremos todos estos conocimientos y los aplicaremos en la práctica para procesar datos de texto y realizar una actualización del sistema. Conoceremos escenarios reales de uso: desde el análisis de logs del sistema hasta la automatización de la instalación y configuración de paquetes.

Tarea 1: Búsqueda de errores en el log

Escenario: Imagina que eres administrador del sistema y necesitas entender rápidamente qué está pasando en el sistema. Para ello analizaremos los logs del sistema (/var/log/syslog).

Paso 1: Filtrar por palabras clave

Comenzaremos buscando líneas relacionadas con errores usando grep:

grep "error" /var/log/syslog

¡Oh, encontramos algo! Pero vamos a mejorarlo. Supongamos que quieres ignorar mayúsculas y minúsculas (ya sea ERROR o error):

grep -i "error" /var/log/syslog

Ahora veremos más coincidencias. Pero a veces necesitamos encontrar todo lo que no está relacionado con errores:

grep -v "error" /var/log/syslog

Paso 2: Simplificar la salida con cut

Supongamos que solo te interesa la marca de tiempo y el mensaje. Vamos a extraer las columnas correspondientes:

grep "error" /var/log/syslog | cut -d' ' -f1,2,3,5-

Aquí usamos cut para dividir las líneas por espacios -d' ', seleccionando las columnas 1, 2, 3 (hora) y el texto restante.

Tarea 2: Contar la frecuencia de eventos

Ahora queremos entender con qué frecuencia ocurren los errores. Combinamos grep, cut y sort con uniq:

grep "error" /var/log/syslog | cut -d' ' -f5 | sort | uniq -c

Este comando:

  1. Busca líneas con errores usando grep.
  2. Extrae solo la información sobre la fuente del error con cut.
  3. Ordena los datos con sort para que uniq pueda contar la cantidad de repeticiones de cada línea.

El resultado se verá así:

  10 systemd
   7 kernel
   5 cron

Los errores de systemd ocurren con mayor frecuencia. ¡Es hora de sacar conclusiones!


2. Carga y procesamiento de datos externos

Escenario: Análisis de datos desde una fuente externa

Supongamos que necesitamos cargar un archivo de texto con datos (por ejemplo, un archivo de log) desde un servidor web y analizarlo. Vamos a hacerlo paso a paso.

Paso 1: Carga del archivo

Primero descarguemos el archivo con wget:

wget -O data.log http://example.com/logs/data.log

El archivo se descarga y se guarda como data.log. En caso de error durante la descarga, añadimos reanudación:

wget -c -O data.log http://example.com/logs/data.log

Si prefieres curl:

curl -o data.log http://example.com/logs/data.log

Paso 2: Búsqueda de información

Ahora buscamos las líneas que contienen un patrón específico, por ejemplo, WARNING:

grep "WARNING" data.log

Paso 3: Formateo de datos con awk

Supongamos que el log tiene tres columnas: fecha, hora y mensaje. Queremos mostrar solo la fecha y el mensaje:

awk '{print $1, $3}' data.log

Y si es necesario filtrar las líneas donde el mensaje contiene la palabra error, podemos añadir una condición:

awk '/error/ {print $1, $3}' data.log

3. Actualización del sistema con apt-get y yum

Ahora vamos a tareas más "sistémicas". Actualizar paquetes es un proceso vital para mantener la seguridad y estabilidad del sistema. Mostraremos cómo se hace.

Escenario: Actualización del sistema

Paso 1: Actualización de la lista de paquetes

Para distribuciones basadas en Debian:

sudo apt-get update

Para distribuciones basadas en RedHat:

sudo yum check-update

Paso 2: Instalación de actualizaciones

Basado en Debian:

sudo apt-get upgrade
Basado en RedHat:
sudo yum update

Paso 3: Instalación de un nuevo paquete

Por ejemplo, para instalar el editor de texto vim:

sudo apt-get install vim
sudo yum install vim

Consejo útil

Si sabes exactamente qué paquete quieres instalar, pero no estás seguro de su nombre, utiliza apt search o yum search:

apt search nombre_del_paquete
yum search nombre_del_paquete

4. Tarea final

Tarea: Automatización de la actualización y el procesamiento de datos

  1. Crear un script bash, que:
    • Actualice el sistema;
    • Descargue un archivo de texto (por ejemplo, un journal);
    • Analice este archivo en busca de errores;
    • Guarde los resultados del análisis en un nuevo archivo.

Aquí tienes un ejemplo de tal script:

# Paso 1: Actualización del sistema
echo "Actualizando el sistema..."
sudo apt-get update && sudo apt-get -y upgrade

# Paso 2: Descarga del archivo
echo "Descargando archivo de logs..."
wget -O data.log http://example.com/logs/data.log

# Paso 3: Análisis del archivo
echo "Analizando archivo de logs en busca de errores..."
grep "ERROR" data.log | cut -d' ' -f1,5- | sort | uniq -c > analysis.log

echo "Análisis completado. Resultados guardados en analysis.log"

Guarda este script, por ejemplo, como update_and_analyze.sh, define permisos de ejecución:

chmod +x update_and_analyze.sh

Y ejecútalo:

./update_and_analyze.sh

Atención: errores típicos

  • Si ves un mensaje de "acceso denegado", asegúrate de ejecutar el script como usuario con privilegios de sudo.

  • Si wget o curl no están instalados, añade su instalación al inicio del script:

    sudo apt-get install -y wget
    

¿Cuál es el beneficio práctico?

Estas habilidades te serán útiles no solo en el trabajo, sino también en entrevistas. Saber encontrar errores en los logs, filtrar datos y ejecutar actualizaciones del sistema es algo valioso entre administradores e ingenieros. Los scripts permiten automatizar tareas, ahorrando tiempo y garantizando la ausencia de errores humanos.

P.D. Recuerda, en el mundo real te encontrarás con tareas donde necesitarás combinar comandos, modificar la salida y configurar automáticamente el sistema. El ejemplo de hoy es solo la punta del iceberg de tu futura práctica.

1
Опрос
Utilidades del sistema en Linux,  8 уровень,  6 лекция
недоступен
Utilidades del sistema en Linux
Utilidades del sistema en Linux
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION