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."