Plantilla segura para scripts bash de mantenimiento
Este post resume patrones seguros para scripts de mantenimiento: logging, validaciones, dry-run, control de errores y limpieza de temporales.
Plantilla base
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #!/usr/bin/env bash
set -euo pipefail
LOG="/var/log/mantenimiento.log"
DRY_RUN="${DRY_RUN:-0}"
log() {
printf '[%s] %s\n' "$(date --iso-8601=seconds)" "$*" | tee -a "$LOG"
}
need() {
command -v "$1" >/dev/null 2>&1 || {
log "Falta binario requerido: $1"
exit 2
}
}
run() {
log "+ $*"
if [[ "$DRY_RUN" != "1" ]]; then
"$@"
fi
}
main() {
need rsync
run rsync -avh /origen/ /destino/
}
main "$@"
|
Temporales y limpieza
1
2
| tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT
|
Leer ficheros linea a linea
1
2
3
| while IFS= read -r linea; do
printf 'Procesando: %s\n' "$linea"
done < fichero.txt
|
Comprobar codigos de salida
1
2
3
4
5
6
| if comando; then
log "Comando correcto"
else
log "Comando fallo"
exit 1
fi
|
Errores a evitar
- Variables sin comillas.
- Secretos escritos en el script.
rm sin validar ruta.kill -9 como primera opcion.- Shebang incorrecto.
- Scripts sin
dry-run para operaciones destructivas.
Scripts relacionados
liberamemoria.sh: ejemplo de mantenimiento simple con privilegios de root.depura_ficheros.sh: ejemplo de limpieza programada de ficheros antiguos.