En este proyecto, vamos a crear un script en Bash que recopile y muestre información detallada sobre el sistema. Este tipo de script puede ser muy útil para administradores de sistemas y desarrolladores que necesitan obtener rápidamente datos sobre el entorno en el que están trabajando.
Objetivos del Proyecto
- Recopilar información básica del sistema como el nombre del host, la versión del sistema operativo y el tiempo de actividad.
- Obtener detalles sobre el hardware, como la CPU y la memoria.
- Mostrar información sobre el uso del disco y la red.
- Presentar los datos de manera clara y organizada.
Paso 1: Configuración Inicial del Script
Primero, crearemos un archivo de script y le daremos permisos de ejecución.
# Crear el archivo de script touch system_info.sh # Dar permisos de ejecución chmod +x system_info.sh
Paso 2: Recopilación de Información del Sistema
Información Básica del Sistema
Vamos a empezar por obtener información básica del sistema.
#!/bin/bash # Nombre del host HOSTNAME=$(hostname) # Versión del sistema operativo OS=$(uname -o) # Tiempo de actividad UPTIME=$(uptime -p) echo "Información Básica del Sistema" echo "-----------------------------" echo "Nombre del Host: $HOSTNAME" echo "Sistema Operativo: $OS" echo "Tiempo de Actividad: $UPTIME" echo
Información de la CPU
A continuación, obtendremos detalles sobre la CPU.
# Información de la CPU CPU=$(lscpu | grep "Model name" | awk -F: '{print $2}') echo "Información de la CPU" echo "---------------------" echo "Modelo de CPU: $CPU" echo
Información de la Memoria
Ahora, vamos a obtener información sobre la memoria del sistema.
# Información de la Memoria MEMORY=$(free -h | grep "Mem:" | awk '{print $2 " total, " $3 " used, " $4 " free"}') echo "Información de la Memoria" echo "-------------------------" echo "Memoria: $MEMORY" echo
Uso del Disco
Para el uso del disco, utilizaremos el comando df
.
# Uso del Disco DISK=$(df -h / | grep "/" | awk '{print $2 " total, " $3 " used, " $4 " free"}') echo "Uso del Disco" echo "-------------" echo "Disco: $DISK" echo
Información de la Red
Finalmente, obtendremos información sobre la red.
# Información de la Red IP=$(hostname -I | awk '{print $1}') INTERFACE=$(ip -o -4 route show to default | awk '{print $5}') echo "Información de la Red" echo "---------------------" echo "Dirección IP: $IP" echo "Interfaz de Red: $INTERFACE" echo
Paso 3: Script Completo
Aquí está el script completo que recopila y muestra toda la información mencionada.
#!/bin/bash # Nombre del host HOSTNAME=$(hostname) # Versión del sistema operativo OS=$(uname -o) # Tiempo de actividad UPTIME=$(uptime -p) # Información de la CPU CPU=$(lscpu | grep "Model name" | awk -F: '{print $2}') # Información de la Memoria MEMORY=$(free -h | grep "Mem:" | awk '{print $2 " total, " $3 " used, " $4 " free"}') # Uso del Disco DISK=$(df -h / | grep "/" | awk '{print $2 " total, " $3 " used, " $4 " free"}') # Información de la Red IP=$(hostname -I | awk '{print $1}') INTERFACE=$(ip -o -4 route show to default | awk '{print $5}') echo "Información Básica del Sistema" echo "-----------------------------" echo "Nombre del Host: $HOSTNAME" echo "Sistema Operativo: $OS" echo "Tiempo de Actividad: $UPTIME" echo echo "Información de la CPU" echo "---------------------" echo "Modelo de CPU: $CPU" echo echo "Información de la Memoria" echo "-------------------------" echo "Memoria: $MEMORY" echo echo "Uso del Disco" echo "-------------" echo "Disco: $DISK" echo echo "Información de la Red" echo "---------------------" echo "Dirección IP: $IP" echo "Interfaz de Red: $INTERFACE" echo
Ejercicio Práctico
Tarea: Modifica el script para que también muestre la lista de usuarios actualmente conectados al sistema.
Solución:
#!/bin/bash # Nombre del host HOSTNAME=$(hostname) # Versión del sistema operativo OS=$(uname -o) # Tiempo de actividad UPTIME=$(uptime -p) # Información de la CPU CPU=$(lscpu | grep "Model name" | awk -F: '{print $2}') # Información de la Memoria MEMORY=$(free -h | grep "Mem:" | awk '{print $2 " total, " $3 " used, " $4 " free"}') # Uso del Disco DISK=$(df -h / | grep "/" | awk '{print $2 " total, " $3 " used, " $4 " free"}') # Información de la Red IP=$(hostname -I | awk '{print $1}') INTERFACE=$(ip -o -4 route show to default | awk '{print $5}') # Usuarios conectados USERS=$(who) echo "Información Básica del Sistema" echo "-----------------------------" echo "Nombre del Host: $HOSTNAME" echo "Sistema Operativo: $OS" echo "Tiempo de Actividad: $UPTIME" echo echo "Información de la CPU" echo "---------------------" echo "Modelo de CPU: $CPU" echo echo "Información de la Memoria" echo "-------------------------" echo "Memoria: $MEMORY" echo echo "Uso del Disco" echo "-------------" echo "Disco: $DISK" echo echo "Información de la Red" echo "---------------------" echo "Dirección IP: $IP" echo "Interfaz de Red: $INTERFACE" echo echo "Usuarios Conectados" echo "-------------------" echo "$USERS" echo
Conclusión
En este proyecto, hemos creado un script en Bash que recopila y muestra información detallada sobre el sistema. Este script puede ser extendido y personalizado según las necesidades específicas del usuario. Asegúrate de probar y modificar el script para adaptarlo a tus propios requisitos y mejorar tus habilidades en Bash.
En el siguiente proyecto, aplicaremos técnicas similares para crear un analizador de archivos de registro. ¡Sigue practicando y mejorando tus habilidades en Bash!
Curso de Programación en Bash
Módulo 1: Introducción a Bash
- ¿Qué es Bash?
- Configurando tu Entorno
- Navegación Básica en la Línea de Comandos
- Entendiendo el Shell
Módulo 2: Comandos Básicos de Bash
- Operaciones con Archivos y Directorios
- Comandos de Procesamiento de Texto
- Permisos y Propiedad de Archivos
- Redirección y Tuberías
Módulo 3: Fundamentos de Scripting
Módulo 4: Scripting Intermedio
Módulo 5: Técnicas Avanzadas de Scripting
- Operaciones Avanzadas con Archivos
- Gestión de Procesos
- Manejo de Errores y Depuración
- Expresiones Regulares
Módulo 6: Trabajando con Herramientas Externas
Módulo 7: Automatización y Programación
Módulo 8: Mejores Prácticas y Optimización
- Escribiendo Código Legible
- Optimizando Scripts en Bash
- Consideraciones de Seguridad
- Control de Versiones con Git