Hello, I’ve written a code to automatically backup our Routers with RouterOS running.
So, the script simply backup, more code to help identify the backup, like from where, when it did the backup.
But, when try to upload to the FTP, the folder structure need to be already there, otherwise it will fail to send.
Is it possible to create the folder by using the command ? If not, every new AP that we put on the tower I need to create the whole folder structure again, to make sure that this new router would backup with success.
Thanks
Here is the code:
Comments are in portuguese because we are Brazilian
#
## Definindo variaveis padroes
#
# CONSIDERANDO NOME DO DISPOSITIVO EXEMPLO : "XYZ-RB750"
# Logo nome do dispositivo sera "XYZ-RB750" porem o POP sera somente "XYZ"
#
:local nomedohost [/system identity get value-name=name];
:local popdoequip [:pick [/system identity get name] 0 [:find [/system identity get name] "-"]];
:local senhaftp "******";
:local usuarioftp "userftp";
:local ftpupload "192.168.0.1";
#
# Definindo variaveis do nome do arquivo.
#
# definindo meses do ano
:local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
# puxando data
:local ds [/system clock get date];
:local ano [ :pick $ds 7 11 ];
# convertendo o nome do mes para numero
:local month [ :pick $ds 0 3 ];
:local mm ([ :find $months $month -1 ] + 1);
:if ($mm < 10) do={ :set mm ("0" . $mm); }
# definindo formato da variavel $ds para DD-MM-AAAA
:set ds ([:pick $ds 4 6] . $mm . [:pick $ds 7 11])
:local mesdoano ("MES-" . $mm);
#
#
:local ts [/system clock get time];
:set ts ([:pick $ts 0 2].[:pick $ts 3 5])
:local nomedoarquivo "$nomedohost -- $ds -- $ts";
#
# Cria backup e exportar as configuracoes
#
:do {
export compact file="$nomedoarquivo"
:delay 25s;
/system backup save name="$nomedoarquivo"
:delay 25s;
:log info "Backup Criado com sucesso"
#
# Envia arquivos gerados para um servidor FTP
#
/tool fetch address=$ftpupload src-path="$nomedoarquivo.rsc" user=$usuarioftp mode=ftp password=$senhaftp dst-path="/BACKUPS/Exports/$ano/$mesdoano/$popdoequip/$nomedohost/$nomedoarquivo.rsc" upload=yes
:delay 10s;
#
#
/tool fetch address=$ftpupload src-path="$nomedoarquivo.backup" user=$usuarioftp mode=ftp password=$senhaftp dst-path="/BACKUPS/BKP-Files/$ano/$mesdoano/$popdoequip/$nomedohost/$nomedoarquivo.backup" upload=yes
:delay 10s;
#
#
:log info "Backups enviados com sucesso para FTP"
#
} on-error={/tool e-mail send to=****@***.com.br subject="$nomedohost nao fez backup em $ds" body="Foi feita uma tentativa de backup e upload para FTP sem sucesso. Sugiro que se faca um backup manual no dispositivo $nomedohost"; :log warning "BACKUP NAO REALIZADO em $ds-$ts"; }
# Deletando backups do disco, para que nao se acumulem e acabem enchendo o disco
:if ([:len [/log find message="BACKUP NAO REALIZADO em $ds-$ts"]] > 0) do={ :log info "BACKUP NAO DELETADO POR ERRO DE ENVIO"} else={
/file remove "$nomedoarquivo.rsc"
/file remove "$nomedoarquivo.backup"
:log info "Arquivos de Backups do disco local removidos com sucesso"}