10 scripts Bash útiles para el día a día del sysadmin

Colección de scripts Bash prácticos para monitorización, backups, limpieza de logs y tareas comunes de administración de sistemas.

10 scripts Bash útiles para el día a día del sysadmin

Introducción

Los scripts Bash son la navaja suiza del sysadmin. Aquí tienes una colección de scripts prácticos para tareas cotidianas.

1. Monitor de disco

#!/bin/bash
THRESHOLD=80
df -h --output=pcent,target | tail -n+2 | while read usage mount; do
  pct=${usage%\%}
  if [ "$pct" -ge "$THRESHOLD" ]; then
    echo "ALERTA: $mount está al $usage"
  fi
done

2. Backup con rotación

#!/bin/bash
BACKUP_DIR="/backups"
DAYS=7
tar czf "$BACKUP_DIR/backup-$(date +%F).tar.gz" /etc /opt/app
find "$BACKUP_DIR" -name "backup-*.tar.gz" -mtime +$DAYS -delete

3. Limpieza de logs

#!/bin/bash
find /var/log -name "*.log" -mtime +30 -exec truncate -s 0 {} \;
journalctl --vacuum-time=7d

4. Verificación de servicios

#!/bin/bash
SERVICES=("nginx" "postgresql" "redis")
for svc in "${SERVICES[@]}"; do
  if ! systemctl is-active --quiet "$svc"; then
    echo "$svc caído, reiniciando..."
    sudo systemctl restart "$svc"
  fi
done

5. Info rápida del sistema

#!/bin/bash
echo "=== $(hostname) ==="
echo "Uptime: $(uptime -p)"
echo "CPU: $(nproc) cores - Load: $(cat /proc/loadavg | cut -d' ' -f1-3)"
echo "RAM: $(free -h | awk '/Mem:/{print $3"/"$2}')"
echo "Disco: $(df -h / | awk 'NR==2{print $3"/"$2" ("$5")"}')"

6. Alerta de memoria alta

#!/bin/bash
THRESHOLD=85
usage=$(free | awk '/Mem:/{printf("%.0f", $3/$2*100)}')
if [ "$usage" -ge "$THRESHOLD" ]; then
  echo "ALERTA: uso de memoria al ${usage}%"
fi

7. Sincronización de directorios con rsync

#!/bin/bash
SOURCE="/srv/app/"
DEST="backup@192.168.1.50:/data/app/"
rsync -avz --delete "$SOURCE" "$DEST"

8. Comprobación de puertos críticos

#!/bin/bash
PORTS=(22 80 443 5432)
for port in "${PORTS[@]}"; do
  if ! ss -lnt | awk '{print $4}' | grep -q ":$port$"; then
    echo "ALERTA: puerto $port no está escuchando"
  fi
done

9. Renovación automática de certificados (Let’s Encrypt)

#!/bin/bash
certbot renew --quiet
if [ $? -eq 0 ]; then
  systemctl reload nginx
fi

10. Inventario básico de servidores

#!/bin/bash
OUT="/tmp/inventario-$(date +%F).csv"
echo "host,ip,kernel,uptime" > "$OUT"
for host in "$@"; do
  ssh "$host" "echo -n \"$host,\"; hostname -I | awk '{print \$1}' | tr -d '\n'; echo -n ','; uname -r | tr -d '\n'; echo -n ','; uptime -p"
done >> "$OUT"
echo "Inventario generado en: $OUT"

Conclusión

Automatizar tareas repetitivas con Bash ahorra tiempo y reduce errores. Guarda estos scripts en un repositorio y adáptalos a tu entorno.

## Nota

✍️ Transparencia: Este artículo ha sido creado con el apoyo de herramientas de inteligencia artificial. Toda la información técnica ha sido revisada y validada por el autor antes de su publicación.

$ curl tengoping.com/rss.xml | subscribe [suscribirse por RSS →]