Script de administración: Report diario con las copias de seguridad

Hola!

Tan sólo quería compartir que he desarrollado un pequeño script para que me mande un correo diario con los últimas copias de seguridad realizadas. De esta forma espero que sea sencillo darse cuenta si alguno no funciona bien.

Un saludo!

4 Me gusta

Hola,

Para dejarlo documentado, os paso el código (sin la información sensible). Este script lo tengo en un servidor mío (ya que centraliza varios proyectos), aunque se podría implementar des de cualquier otro, incluso una RPi.

Primero, copio mi llave pública en el servidor dónde se hacen las copias:
ssh-copy-id anartist@XX.XXX.XXX.XX

Y creo una carpeta dónde montar las copias de seguridad e instalo dependencias:

mkdir borgbackup
apt install sshfs borgbackup

Este es el cógido del script:

#!/bin/bash

cd /root

echo "BACKUP REPORT" > report.txt
echo "" >> report.txt

date  >> report.txt
echo "" >> report.txt

## Anartist
sshfs anartist@XX.XXX.XXX.XX:/home/anartist/borgbackup borgbackup/
echo "" >> report.txt
echo "ANARTIST" >> report.txt
### Audio
echo "Audio" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/audio | tail -1 >> report.txt
### Blog
echo "Blog" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/blog | tail -1 >> report.txt
### Cloud
echo "Cloud" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/cloud | tail -1 >> report.txt
### Forum
echo "Forum" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/forum | tail -1 >> report.txt
### Mail
echo "Mail" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/mail | tail -1 >> report.txt
### Picto
echo "Picto" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/picto | tail -1 >> report.txt
### Site
echo "Site" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/site | tail -1 >> report.txt
### Social
echo "Social" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/social | tail -1 >> report.txt
### Video
echo "Video" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/video | tail -1 >> report.txt

fusermount -u borgbackup/

echo "Report finalizado!" >> report.txt

python mail.py "$(cat report.txt)"

Y el script “mail.py”:

import smtplib, ssl, sys

port = 587  # For SSL
smtp_server = "mail.anartist.org"
password = "XXXXXXXXX"
sender_email = "XXX@anartist.org"
receiver_email = "XXX@XXX.XXX"
subject = "Backup report"

message = """From: %s\nTo: %s\nSubject: %s\n\n%s""" % (sender_email, receiver_email, subject, sys.argv[1])

# Create a secure SSL context
context = ssl.create_default_context()

with smtplib.SMTP(smtp_server, port) as server:
    server.starttls(context=context)
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)

Y finalimente, configuro el cron:

0 6 * * * bash /root/report.sh
2 Me gusta