Tutoriales

5 scripts bash que uso como Sysadmin de Linux todos los días

Si pasa algún tiempo administrando su sistema de Linux, ya conoce la repetición y el tiempo que requiere mucho tiempo. Ya sea que esté revisando el espacio en el disco, reiniciar un servicio fallido o mantener el sistema actualizado, hacer todo manualmente puede ser un dolor de cabeza, especialmente cuando se trata de múltiples servidores.

Los scripts bash son como pequeños asistentes que pueden ayudarlo a automatizar tareas comunes, reducir los errores humanos y ahorrar tiempo valioso. Puede hacer que el script maneje el mismo comando de manera confiable y consistente, pero deje que el script lo maneje.

Con los años, muchos administradores del sistema han creado y refinado scripts para monitorear los sistemas, mantener y responder automáticamente a los problemas antes de que puedan convertirse en problemas graves.

En este artículo, encontrará cinco scripts bash simples pero potentes que son útiles en la gestión de sistemas de Linux cotidianos. Estos scripts son amigables para principiantes y son fáciles de modificar su propio entorno.

1. Script de visualización de uso de disco

Uno de los problemas más comunes en los servidores de Linux se está quedando sin espacio en el disco. Los registros están poblados, las copias de seguridad se cultivan y luego su aplicación de repente se bloquea porque el servidor no está fuera de espacio. Es por eso que mi primer script verifica el uso del disco y si el uso excede el límite establecido (p. 80%).

#!/bin/bash
THRESHOLD=80
EMAIL="[email protected]"

df -hP | grep -vE '^Filesystem|tmpfs|cdrom' | while read line; do
  USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
  MOUNTPOINT=$(echo $line | awk '{print $6}')
  
  if [ $USAGE -ge $THRESHOLD ]; then
    echo "Warning: High disk usage on $MOUNTPOINT ($USAGE%)" | mail -s "Disk Alert: $HOSTNAME" $EMAIL
  fi
done

El guión verifica cada partición y si alguno de ellos cruza el umbral del 80%, recibo un correo electrónico. Me ayuda a resolver el problema antes de resolverlo. Ejecuto este guión cada 6 horas a través de Cron.

2. Script de automatización de actualización del sistema

Mantener su sistema actualizado es crucial, especialmente para parches de seguridad. Utilizo este simple script bash para actualizar automáticamente el paquete, limpiar el sistema y enviarme un informe.

#!/bin/bash
LOGFILE="/var/log/sys-updates.log"
EMAIL="[email protected]"

echo "Starting updates on $(date)" >> $LOGFILE
apt update && apt upgrade -y >> $LOGFILE 2>&1
apt autoremove -y >> $LOGFILE 2>&1

tail -20 $LOGFILE | mail -s "System Update Report: $HOSTNAME" $EMAIL

(Para usuarios de Rhel/Centos, simplemente reemplace apt y yum o dnf Orden. )

Ejecutar este script todos los días a través del trabajo de Cron puede hacer que mi sistema se actualice y limpie. El informe de correo electrónico me aseguró que todo iba bien. Si algo se rompe, puedo verificar el archivo de registro y volver.

3. Script de control de salud del servicio

Como sysadmin necesito saber si los servicios clave como apache,,,,, nginxo mysql Bajar. El script verifica si se ejecuta un servicio específico y si no se ejecuta se reinicia y me notifica.

#!/bin/bash
SERVICES=("apache2" "mysql")
EMAIL="[email protected]"

for SERVICE in "${SERVICES[@]}"; do
  if ! systemctl is-active --quiet $SERVICE; then
    systemctl start $SERVICE
    echo "$SERVICE was down and has been restarted on $HOSTNAME" | mail -s "Service Restart Alert" $EMAIL
  fi
done

Cron verifica el guión cada 5 minutos. Si alguno de los servicios ha caído, lo reiniciará automáticamente y me enviará un encabezado.

4. Script de copia de seguridad para archivos importantes

Las copias de seguridad son aburridas hasta que las necesite. Tengo un script bash personalizado que respalda mis archivos clave (por ejemplo, archivos web, bases de datos, archivos de configuración) y los almacene en un archivo comprimido.

#!/bin/bash
BACKUP_DIR="/backup"
SOURCE_DIRS="/etc /var/www /home"
DATE=$(date +%F)
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
EMAIL="[email protected]"

tar -czf $BACKUP_FILE $SOURCE_DIRS

if [ $? -eq 0 ]; then
  echo "Backup completed successfully: $BACKUP_FILE" | mail -s "Backup Success - $HOSTNAME" $EMAIL
else
  echo "Backup FAILED!" | mail -s "Backup Failed - $HOSTNAME" $EMAIL
fi

Eliminé accidentalmente al usuario y este script me guardó más de una vez. Mantengo las copias de seguridad durante 7 días y las giro a través de otro script de limpieza. También puede cargar copias de seguridad en servidores remotos o almacenamiento en la nube para obtener más seguridad.

5. Script de monitoreo de inicio de sesión de usuario

Este script verifica la actividad de inicio de sesión del usuario y le recuerda si ha iniciado sesión, especialmente útil si administra los servidores de producción y desea rastrear el acceso.

#!/bin/bash
LOGFILE="/var/log/auth.log"
LAST_RUN_FILE="/tmp/last_run_time"
EMAIL="[email protected]"

if [ ! -f $LAST_RUN_FILE ]; then
  date --date="5 minutes ago" +%s > $LAST_RUN_FILE
fi

LAST_RUN=$(cat $LAST_RUN_FILE)
NOW=$(date +%s)

awk -v last=$LAST_RUN -v now=$NOW '
  $0 ~ /session opened for user/ {
    cmd = "date -d \""$1" "$2" "$3"\" +%s"
    cmd | getline t
    close(cmd)
    if (t >= last && t  $LAST_RUN_FILE

Este script me ayuda a saber quién accedió al servidor y cuándo. Muy adecuado para modos de acceso para detectar excepciones. Puede extenderlo para bloquear IP o activar una alerta si es necesario.

en conclusión

En resumen, confiar en los scripts de Bash en mi rutina diaria de Sysadmin mejora enormemente la forma en que administro y mantengo los sistemas Linux. Estos scripts pueden parecer simples en la superficie, pero las tareas críticas que manejan pueden mantener el servidor estable, seguro y suave.

Si desea automatizar una verificación completa del sistema de salud (CPU, memoria, disco, etc.), no se pierda mi otra guía: Cómo automatizar las verificaciones de salud de Linux con scripts bash + cron

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba