Primero que nada, el código general:
- Código: Seleccionar todo
:log info "#################### Iniciando Backup"
:global backupfile ([/system identity get name] . "-" . [/system clock get time])
/system backup save name=$backupfile
:log info "#################### Pausa de 10 segundos"
:delay 10s
:log info "#################### Enviando Backup por mail a backups@wificanarias.com"
/tool e-mail send to="[MI@EMAIL.COM]" subject=([/system identity get name] . " Backup " . [/system clock get time]) from="MI@EMAIL.COM" file=$backupfile
:log info "#################### Pausa 60 seg antes de borrar el backup"
:delay 60s
:log info "#################### Borrando el archivo de /File"
/file remove $backupfile
:log info "#################### Backup finalizado"
Obviamente, esto funciona porque previamente se ha configurado el correo (/tool e-mail), donde simplemente hay que indicar el servidor de correo saliente.
Explicación del código:
1º Añadimos una entrada en el LOG, a fin de dejar un registro de las horas de backup y saber si este se ha realizado correctamente. Esto se hace antes de cada comando que ejecute, a fin de dejar un registro completo.
- Código: Seleccionar todo
:log info "#################### Iniciando Backup"
2º Definimos el nombre del archivo de backup. Para ello, obtenemos el nombre del sistema y su hora y lo almacenamos en la variable 'backupfile', lo cual es bastante cómodo para saber de dónde sale el backup. De cualquier manera, siempre se puede usar un nombre estático.
- Código: Seleccionar todo
:global backupfile ([/system identity get name] . "-" . [/system clock get time])
3º Ejecutamos el backup y asignamos el nombre de la variable anterior
- Código: Seleccionar todo
/system backup save name=$backupfile
4º Hacemos una pausa. Esto es importante, ya que el backup tarda cierto tiempo en completarse. Si no hiciéramos la pausa, el script continuaría e intentaría enviar un archivo inacabado y sobre el que no puede actuar puesto que está abierto por otro proceso, por lo que obtendríamos un bonito error en el LOG.
- Código: Seleccionar todo
:delay 10s
5º Enviamos el correo usando datos obtenidos de las variables de sistema (usando get). Los puntos "." se usan para unir cadenas de texto.
- Código: Seleccionar todo
/tool e-mail send to="[MI@EMAIL.COM]" subject=([/system identity get name] . " Backup " . [/system clock get time]) from="MI@EMAIL.COM" file=$backupfile
6º Ahora volvemos a hacer otra pausa, con tiempo suficiente para que el correo se envíe.
- Código: Seleccionar todo
:delay 60s
7º Borramos el backup del sistema de archivos de nuestro Mikrotik
- Código: Seleccionar todo
/file remove $backupfile
Consideraciones:
· Los tiempos de retardo dependerán del tamaño del backup. En mi caso, estos tiempos son válidos para un backup de 900KB, pero a medida que crezcan las configuraciones, usuarios, etc, ese archivo también crecerá, por lo que conviene vigilar esos tiempos.
· Precisamente para depurar es por lo que es conveniente introducir tantas líneas de LOG, para que en caso de error, saber exactamente dónde se ha producido el fallo y arreglarlo facilmente. Las celdillas #### las pongo simplemente para identificarlas fácilmente de un vistazo al ver un log grande.
· Este escript está probado en versiones 4.1 y 4.2 de ROS. Desconozco si funciona en anteriores versiones, aunque probablemente si. En mi caso, con versiones anteriores y correos de GMAIL no funcionaba puesto que ROS no soportaba TLS en cuentas de correo.
Espero vuestros comentarios!
