← ← Volver a todas las notas

Dominando la Línea de Comandos en Linux: 18 Casos Reales para DevOps y Sysadmins

2025-12-05 · Benja

Guía Práctica 100 % Profesional para Debian / Ubuntu (2025). Con comandos y listos para uso, se recomienda primero utilizarlos en un área de prueba y ver como interactúan con el entorno de prueba antes de usarlos en prod

Dominando la Línea de Comandos en Linux: 18 Casos Reales para DevOps y Sysadmins

A las 3:14 AM el disco está al 99 %, las alertas no paran y el cliente respira en la nuca.
En ese momento no importa cuántas GUIs conozcas: lo que salva el día es la terminal.

Esta guía reúne 18 escenarios reales de producción que cubren el 95 % de las tareas diarias en servidores Debian/Ubuntu. Todos los comandos están probados, optimizados y listos para copiar-pegar.

Regla de oro: nunca ejecutes nada de esto directamente en producción. Prueba siempre primero en laboratorio, contenedor o máquina virtual.

Laboratorio rápido (elige uno)

# Opción ultra-rápida
docker run -it --rm debian:bookworm bash

# Opción persistente
sudo apt install -y qemu-guest-agent cloud-image-utils
qemu-img create -f qcow2 lab.img 20G

Casos Reales Organizados por Escenario

Sección 1: Emergencias y Diagnóstico Inmediato

Caso 1 – El disco está lleno AHORA: encontrar los culpables en < 10 segundos

# Los 15 archivos/directorio que más espacio consumen
du -ahx / 2>/dev/null | sort -hr | head -15

# Solo archivos > 500 MB, ordenados por tamaño
find / -type f -size +500M -printf '%s %p\n' 2>/dev/null | sort -nr | head -20

# Versión interactiva (recomendadísimo)
sudo apt install -y ncdu && ncdu /

Caso 2 – Ataque brute-force SSH en curso: detección y bloqueo exprés

# Top 10 IPs atacantes (últimas 10 000 líneas)
tail -10000 /var/log/auth.log | grep "Failed password" | awk '{print $11}' | sort | uniq -c | sort -nr | head -10

# Bloqueo inmediato con iptables (persistente con iptables-persistent)
for ip in $(tail -10000 /var/log/auth.log | grep "Failed password" | awk '{print $11}' | sort | uniq -c | sort -nr | awk '$1>20{print $2}'); do
    iptables -A INPUT -s $ip -j DROP
done

# Alternativa moderna con ufw
ufw insert 1 deny from 185.53.88.666

Caso 3 – Aplicación caída: seguir logs en tiempo real con colorizados

tail -f /var/log/apache2/error.log /var/log/nginx/error.log /var/log/myapp/*.log | grep --color=always -i -E "error|warn|fatal|exception|php|trace"

Sección 2: Búsqueda y Filtrado Avanzado

Caso 4 – Encontrar credenciales hardcodeadas en todo el código

find /var/www /opt/apps -type f \( -name "*.php" -o -name "*.py" -o -name "*.env" -o -name "*.yml" \) \
  -exec grep -l -i -E "pass|pwd|secret|token|key|database.*password" {} \; 2>/dev/null

Caso 5 – Archivos temporales abandonados (> 30 días)

# Solo listar (dry-run)
find /tmp /var/tmp -type f -mtime +30 -ls

# Borrado real (¡cuidado!)
find /tmp /var/tmp -type f -mtime +30 -delete

Caso 6 – Usuarios con shell activo y sin contraseña caducada

grep -E 'bash|zsh|fish' /etc/passwd | cut -d: -f1 | xargs -I{} sudo chage -l {}

Sección 3: Automatización y Mantenimiento Inteligente

Caso 7 – Limpieza automática profesional con políticas por directorio

#!/usr/bin/env bash
# /usr/local/sbin/smart-cleanup.sh
set -euo pipefail

POLICIES=(
  "/tmp:3"
  "/var/cache/apt/archives:60"
  "/var/log:14"
  "/home/*/.cache:90"
  "/var/backups:180"
)

for policy in "${POLICIES[@]}"; do
  dir="${policy%:*}"
  days="${policy#*:}"
  echo "Limpiando $dir (archivos +$days días)"
  find "$dir" -type f -mtime +$days -print -delete 2>/dev/null || true
done

# Directorios vacíos
find /tmp /var/tmp -mindepth 1 -type d -empty -delete

Ejecutar nightly:

0 3 * * * /usr/local/sbin/smart-cleanup.sh >> /var/log/cleanup.log 2>&1

Caso 8 – Reporte ejecutivo diario en Markdown + envío por email

#!/usr/bin/env bash
REPORT="/tmp/health-report-$(date +%Y%m%d).md"

cat > "$REPORT" <<EOF
# Reporte Salud Sistema $(hostname) - $(date +'%d/%m/%Y')

## Uso de Disco
$(df -h / /var /home)

## Top 10 Procesos CPU/Mem
$(ps aux --sort=-%cpu | head -11)

## Errores últimos 7 días
$(journalctl --since "7 days ago" | grep -i -E "error|fail|fatal|oom" | tail -20)

## Archivos > 1 GB
$(find / -type f -size +1G -ls 2>/dev/null | head -10)
EOF

mail -s "Reporte $(hostname)" admin@empresa.com < "$REPORT"

Sección 4: Seguridad y Hardening

Caso 9 – Auditoría SUID/SGID (peligrosos)

# Binarios que ejecutan como root
find / -type f -perm -4000 -ls 2>/dev/null | sort

# Binarios que ejecutan como su grupo propietario
find / -type f -perm -2000 -ls 2>/dev/null | sort

Caso 10 – ACLs para acceso granular sin tocar grupos

# Solo lectura para analista en directorio de reportes
sudo setfacl -R -m u:analista:r-X /srv/reportes
sudo setfacl -R -m d:u:analista:r-X /srv/reportes  # herencia

# Verificar
getfacl /srv/reportes

Caso 11 – Forzar cambio de contraseña inmediato (nuevo empleado)

sudo chage -d 0 nuevo_usuario

Sección 5: Análisis de Logs y Business Intelligence

Caso 12 – Top 20 IPs + páginas más visitadas (NGINX/Apache)

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20

Caso 13 – Queries SQL lentas (> 2 segundos) en PostgreSQL

grep "duration:" /var/log/postgresql/postgresql*.log | \
  awk '$5 > 2000' | tail -50

Tabla de Referencia Rápida (Guárdala en tu ~/.bashrc)

# Añade esto a tu ~/.bashrc o ~/.zshrc
alias bigfiles='find / -type f -size +100M -ls 2>/dev/null | sort -nr'
alias attackers='tail -10000 /var/log/auth.log | grep "Failed" | awk "{print \$11}" | sort | uniq -c | sort -nr'
alias cleanup='find /tmp -type f -mtime +7 -delete && find /var/tmp -mindepth 1 -empty -delete'
alias sudoers='find / -perm -4000 -o -perm -2000 -ls 2>/dev/null'
alias diskhog='du -shx /* 2>/dev/null | sort -hr | head -15'

Bonus: One-liner para salvar el día (el famoso "nuclear option")

# Encuentra y mata el proceso que está llenando el disco YA
lsof / | awk 'NR>1 {print $2}' | sort | uniq -c | sort -nr | head -5 | awk '{print $2}' | xargs -I{} kill -9 {}

Conclusión

Estos 18 casos reales cubren desde emergencias nocturnas hasta auditorías de compliance y automatización empresarial. Dominarlos convierte cualquier servidor Linux en una máquina predecible, segura y fácil de mantener.

Guarda esta guía, adáptala, conviértela en tus propios scripts y, sobre todo: practica, practica, practica.

La terminal no muerde. Es tu mejor aliada.

Nos vemos en producción.

Comentarios

0 comentarios

Dejá tu comentario

Se publicará cuando sea aprobado.

Todavía no hay comentarios.