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"
echoInformació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"
echoUso 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"
echoInformació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"
echoPaso 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"
echoEjercicio 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"
echoConclusió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
