Scripts de Bash Esenciales para Automatización en Linux

Clasificado en Informática

Escrito el en español con un tamaño de 3,01 KB

Scripts de Bash para Automatización y Gestión

1. Obtención de Fecha y Hora

Este script extrae y formatea los componentes de la fecha actual utilizando date y cut.

#!/bin/bash
# La hora y minutos se extraen del campo 5 (09:51:19)
hora=$(date | cut -d" " -f5 | cut -d":" -f1)    # Extrae el '09'
minutos=$(date | cut -d" " -f5 | cut -d":" -f2) # Extrae el '51'

# Los campos para el día y mes estaban intercambiados.
dia=$(date | cut -d" " -f2) # Extrae el '29'
mes=$(date | cut -d" " -f3) # Extrae el 'nov'

# El año ahora es el campo 4, no el 6.
anio=$(date | cut -d" " -f4) # Extrae el '2025'

echo "Son las $hora horas, $minutos minutos del día $dia de $mes de $anio"

2. Contador de Tipos de Archivos

Utiliza find y sed para clasificar y contar archivos por extensión en un directorio.

#!/bin/bash
DIR=${1:-.}
if [ ! -d "$DIR" ]; then
    echo "Error: '$DIR' no es un directorio válido."
    exit 1
fi
echo "Analizando carpeta: $DIR"
echo "----------------------------------------"
find "$DIR" -type f | sed -n 's/.*\.//p' | sort | uniq -c | sort -nr |
while read count ext; do
    printf "%-10s : %d archivos\n" "$ext" "$count"
done
echo "----------------------------------------"
echo "Proceso completado."

3. Copia de Seguridad Temporal

Script básico para realizar respaldos comprimidos.

#!/bin/bash
DESTINO="/root/copias"
mkdir -p "$DESTINO"
FECHA=$(date +"%Y-%m-%d_%H-%M-%S")
ARCHIVO="backup_etc_$FECHA.tar.gz"
tar -czPf "$DESTINO/$ARCHIVO" "$ORIGEN"
echo "Copia de seguridad creada: $DESTINO/$ARCHIVO"

4. Cálculo de Factorial Recursivo

Ejemplo de implementación de funciones recursivas en Bash.

#!/bin/bash
function factorial () {
    if [ $1 -eq 1 ]
    then
        echo 1
    else
        echo $(expr $(factorial $(expr $1 - 1)) \* $1)
    fi
}
echo "El factorial de $1 es $(factorial $1)"

5. Clonación Masiva de Máquinas Virtuales en Proxmox

Automatiza la creación de múltiples clones a partir de una plantilla (template).

#!/bin/bash
echo "Clonación Masiva de VM en Proxmox"
read -p "ID de la plantilla (VM convertida a template): " plantilla
read -p "ID inicial para los clones: " inicio
read -p "ID final: " fin
read -p "Incremento (default = 1): " inc
inc=${inc:-1}
echo "Comenzando clonación..."
for (( id=$inicio; id<=$fin; id+=$inc ))
do
   echo "Clonando plantilla $plantilla → nuevo ID $id ..."
   # qm clone es el comando de Proxmox para clonar
   qm clone $plantilla $id --name "vm-$id" --full 0
   echo "Hecho.
done
echo "Proceso completado."

6. Limpieza de Archivos Temporales

Elimina archivos vacíos en directorios temporales del sistema.

#!/bin/bash
TEMP_DIRS=("/tmp" "/var/tmp")
for dir in "${TEMP_DIRS[@]}"; do
    echo "$(date): Limpiando $dir ..."
    find "$dir" -type f -empty -delete 2>/dev/null
done
echo "$(date): Limpieza completada."

Entradas relacionadas: