📶 Automated RouterOS configuration and binary backups
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.7 KiB

:local rcpt "admin@example.org"
:local id [/system identity get name]
:local ts [/system clock get time]
:local ds [/system clock get date]
:set ts ([:pick $ts 0 2]."-".[:pick $ts 3 5]."-".[:pick $ts 6 8])
:set ds ([:pick $ds 4 6]."-".[:pick $ds 0 3]."-".[:pick $ds 7 11])
:local bn ("backup_".$id."_".$ds."_".$ts)
:local bn1 ($bn.".backup")
:local bn2 ($bn.".rsc")
:local bns {$bn1;$bn2}
:local bnl ([:len $bns])
:local subj ("MT Backup from ".$id." - ".$ds." ".$ts)
:local body ("This is a scheduled backup from MT device \"".$id."\". \r\nDate: ".$ds." \r\nTime: ".$ts." \r\n\r\n".$bnl." file(s) attached.")
:log info "Preparing backups..."
:if ([:len [/tool e-mail get address]] = 0 or [:len [/tool e-mail get from]] = 0) do={
:log error "Email configuration is missing"
:error "Email configuration is missing"
} else={
:local fail false
:do {
/system backup save dont-encrypt=yes name=$bn
/export compact file=$bn
:delay 4s
:log info "Sending backup email..."
:do {/tool e-mail send to=$rcpt subject=$subj body=$body file=$bns} on-error={
:log warning "Failed to send email message. Retrying in 30s..."
:delay 30s
:do {/tool e-mail send to=$rcpt subject=$subj body=$body file=$bns} on-error={
:log error "Failed to send email message (2nd attempt)"
:set fail true
}
}
:delay 20s
:log info "Cleaning up backups..."
/file remove $bns
} on-error={
:log warning "Cleaning up backups after a caught exception..."
/file remove $bns
:set fail true
}
:if ($fail = false) do={
:log info "Backup script completed"
} else={
:log error "Backup script completed with errors"
:error "Backup script completed with errors"
}
}