Script en Bash que recopila información sobre el sistema
El siguiente script recopila información de nuestro sistema, memoria ram, espacio en disco, distribución, carga promedio, uso de CPU, e interfaces de red, entre otras cosas.
abrimos el editor nano,
pegamos el código:
#!/bin/bash
# Script para mostrar información del sistema Debian
echo "-------------------- Información del Sistema --------------------"
echo
# Nombre del Host
hostname=$(hostnamectl | grep "Static hostname" | awk '{print $3}')
echo "Nombre del Host: $hostname"
# Versión del Kernel
kernel=$(uname -r)
echo "Versión del Kernel: $kernel"
# Arquitectura del Sistema
architecture=$(uname -m)
echo "Arquitectura: $architecture"
# Distribución de Debian
distribution=$(cat /etc/os-release | grep "^NAME=" | cut -d'"' -f2)
version=$(cat /etc/os-release | grep "^VERSION_ID=" | cut -d'"' -f2)
codename=$(cat /etc/os-release | grep "^VERSION_CODENAME=" | cut -d'"' -f2)
echo "Distribución: $distribution $version ($codename)"
# Tiempo de Actividad (Uptime)
uptime=$(uptime -p)
echo "Tiempo de Actividad: $uptime"
# Carga Promedio (Load Average)
load_average=$(uptime | awk '{print $10,$11,$12}')
echo "Carga Promedio (1, 5, 15 min): $load_average"
echo
echo "-------------------- Uso de Recursos --------------------"
echo
# Uso de CPU (promedio general)
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
echo "Uso de CPU: $cpu_usage%"
# Uso de Memoria RAM
free_memory=$(free -m | grep "Mem:" | awk '{print $4}')
total_memory=$(free -m | grep "Mem:" | awk '{print $2}')
used_memory=$((total_memory - free_memory))
memory_percentage=$(echo "scale=2; $used_memory * 100 / $total_memory" | bc)
echo "Uso de Memoria RAM: $used_memory MB / $total_memory MB
($memory_percentage%)"
# Uso de Espacio en Disco (partición raíz /)
disk_usage=$(df -h / | awk 'NR==2{print $5}')
total_disk=$(df -h / | awk 'NR==2{print $2}')
free_disk=$(df -h / | awk 'NR==2{print $4}')
echo "Uso de Disco (/): $disk_usage de $total_disk (Libre: $free_disk)"
echo
echo "-------------------- Usuarios Conectados --------------------"
echo
# Usuarios Conectados
users=$(who | wc -l)
echo "Usuarios Conectados: $users"
who
echo
echo "-------------------- Interfaces de Red --------------------"
echo
# Interfaces de Red y sus IPs
ip a | grep "inet " | grep -v "127.0.0.1" | awk '{print $2, $4}'
echo
echo "-------------------------------------------------------------"
Guardamos el archivo como: info_sistema.sh
Le damos permisos de ejecución con:
chmod +x info_sistema.sh
y ejecutamos el script
./info_sistema.sh