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:
- Busca líneas con errores usando
grep. - Extrae solo la información sobre la fuente del error con
cut. - Ordena los datos con
sortpara queuniqpueda 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
- 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
wgetocurlno 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.
GO TO FULL VERSION