Scripts de utilidad de Linux
Aquí tienes el texto traducido al español y con un formato formal y claro para apuntes, manteniendo el código original correctamente presentado y con buena legibilidad:
10 Scripts Esenciales para Administradores de Sistemas Linux
Como administrador de sistemas, gestionar servidores Linux puede ser una tarea que requiere mucho tiempo y resulta tediosa. Para facilitar este trabajo, aquí tienes una recopilación de scripts esenciales que te ayudarán a automatizar tareas, optimizar procesos y mejorar la eficiencia general.
Estos scripts abarcan diversas funciones, desde la monitorización del rendimiento del sistema hasta la gestión de cuentas de usuario.
1. Monitorización de carga del sistema y uso de recursos
Permite llevar un control de la carga del sistema, la memoria libre y el espacio disponible en disco.
#!/bin/bash
echo "System Load: $(uptime)"
echo "Free Memory: $(free -h | grep Mem | awk '{print $4}')"
echo "Free Disk Space: $(df -h / | grep / | awk '{print $4}')"
2. Copias de seguridad automatizadas con sello temporal (timestamp)
Este script crea copias de seguridad de archivos y directorios críticos, añadiendo una marca de tiempo al archivo de respaldo.
#!/bin/bash
SOURCE="/path/to/your/important/files"
DESTINATION="/path/to/your/backup/directory"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
tar czf "${DESTINATION}/backup_${TIMESTAMP}.tar.gz" "${SOURCE}"
3. Gestión de cuentas de usuario
Automatiza la creación, eliminación y actualización de cuentas de usuario.
#!/bin/bash
# Uso: ./user_management.sh [create|delete|update] username
ACTION=$1
USERNAME=$2
case "${ACTION}" in
create)
sudo useradd "${USERNAME}"
;;
delete)
sudo userdel -r "${USERNAME}"
;;
update)
sudo passwd "${USERNAME}"
;;
*)
echo "Acción no válida. Uso: ./user_management.sh [create|delete|update] username"
;;
esac
4. Rotación de archivos de log
Evita que los archivos de registro crezcan demasiado automatizando su rotación.
#!/bin/bash
LOG_FILE="/path/to/your/logfile.log"
MAX_SIZE=10485760 # 10 MB
CURRENT_SIZE=$(wc -c <"${LOG_FILE}")
if [ "${CURRENT_SIZE}" -gt "${MAX_SIZE}" ]; then
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
mv "${LOG_FILE}" "${LOG_FILE}_${TIMESTAMP}"
touch "${LOG_FILE}"
fi
5. Notificación de uso de disco
Envía una alerta cuando el uso del disco supera un umbral definido.
#!/bin/bash
THRESHOLD=90
EMAIL="your-email@example.com"
PARTITION="/"
USAGE=$(df -h "${PARTITION}" | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "${USAGE}" -gt "${THRESHOLD}" ]; then
echo "El uso del disco en ${PARTITION} es del ${USAGE}%. Libere espacio si es necesario." | \
mail -s "Alerta de uso de disco" "${EMAIL}"
fi
6. Monitorización y reinicio de servicios
Verifica automáticamente si un servicio esencial está activo y lo reinicia si no lo está.
#!/bin/bash
SERVICE="your-service-name"
EMAIL="your-email@example.com"
if systemctl is-active --quiet "${SERVICE}"; then
echo "${SERVICE} está en ejecución."
else
echo "${SERVICE} no está en ejecución. Reiniciando..." | mail -s "${SERVICE} Restart Alert" "${EMAIL}"
systemctl start "${SERVICE}"
fi
7. Información de dirección IP
Obtiene la dirección IP pública y privada del servidor.
#!/bin/bash
PUBLIC_IP=$(curl -s https://ipinfo.io/ip)
PRIVATE_IP=$(hostname -I | awk '{print $1}')
echo "Public IP: ${PUBLIC_IP}"
echo "Private IP: ${PRIVATE_IP}"
8. Monitorización de la expiración de certificados SSL
Verifica la fecha de expiración de un certificado SSL y envía una notificación si está próxima.
#!/bin/bash
DOMAIN="yourdomain.com"
EMAIL="your-email@example.com"
DAYS_THRESHOLD=30
EXPIRATION_DATE=$(echo | openssl s_client -servername "${DOMAIN}" -connect "${DOMAIN}:443" 2>/dev/null | \
openssl x509 -enddate -noout | awk -F= '{print $2}')
EXPIRATION_SECONDS=$(date -d "${EXPIRATION_DATE}" +%s)
CURRENT_SECONDS=$(date +%s)
SECONDS_DIFFERENCE=$((EXPIRATION_SECONDS - CURRENT_SECONDS))
DAYS_DIFFERENCE=$((SECONDS_DIFFERENCE / 86400))
if [ "${DAYS_DIFFERENCE}" -lt "${DAYS_THRESHOLD}" ]; then
echo "El certificado SSL para ${DOMAIN} expirará en ${DAYS_DIFFERENCE} días (${EXPIRATION_DATE})." | \
mail -s "Alerta de expiración de certificado SSL" "${EMAIL}"
fi
9. Actualización automática de paquetes del sistema
Mantiene el sistema actualizado de forma automatizada.
#!/bin/bash
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get autoremove -y
10. Comprobación de intentos fallidos de inicio de sesión SSH
Supervisa los intentos fallidos de acceso por SSH y envía una alerta si existen.
#!/bin/bash
LOG_FILE="/var/log/auth.log"
EMAIL="your-email@example.com"
FAILED_ATTEMPTS=$(grep "Failed password" "${LOG_FILE}" | wc -l)
if [ "${FAILED_ATTEMPTS}" -gt 0 ]; then
echo "Se han detectado ${FAILED_ATTEMPTS} intentos fallidos de inicio de sesión SSH." | \
mail -s "Alerta de inicio de sesión SSH" "${EMAIL}"
fi
✅ Consejo final: Guarda estos scripts en un directorio seguro, dales permisos de ejecución con:
chmod +x script_name.sh
y programa su ejecución automática mediante cron para garantizar su funcionamiento continuo
Última actualización