Backup da Rede

Bom dia a todos.

Hoje tenho o provilégio de escrever esse post, após muito tempo, da bela e quente Fortaleza, direto do MUM 2014.

 

Neste ultimo ano mudei de cidade, voltei a trabalhar em um provedor após um período exclusivo como consultor, e aproveitei que há uma boa faculdade em Ponta Grossa e voltei a estudar. Portanto tempo é algo extremamente escasso para escrever ultimamente.

 

Dentre minhas ultimas necessidades, precisei centralizar backups. Isso é sempre complicado de fazer, visto haver rede legada, uma distribuição de várias versões de firmwares, de variadas fabricantes. Enquanto desenvolve alguma coisa mais robusta, comecei por centralizando um repositório de backups. Esse repositório fica disponível para acesso dentro da rede da empresa, mas é fechado para o acesso externo. Através de acesso FTP ou SFTP, os funcionários permitidos tem acesso a esses backups diários. Para tal utilizei bash scripts para backup dos UBNTs, e um script dentro das Routerboards.

Para utilizar os scripts lembre que você precisa ter um servidor FTP ou SSH funcional, e de preferência seguro. Não vou focar nesse aspecto, pois não é o propósito, mas podem ser encontrados n tutoriais para isso.

Abaixo o script para ser utilizada na máquina linux, que rodará o repositório:

#!/bin/bash
dt=$(date +%d%m%Y)
for i in $(cat ubnt_dbug.txt); do
sshpass -p "senha_ubnt" ssh -o StrictHostKeyChecking=no $i -l usuário_ubnt "cat /tmp/system.cfg" > home/mkt_bkp/bkp_AirOS/$i\_$dt.cfg
done

 

 

Como pode ser visto, eu criei um usuário específico para o backup chamado mkt_bkp e configurei uma crontab diária para ele rodar esse script. O script é muito básico, e basicamente:

  • usa uma variável para armazenar a data
  • lê um arquivo com os IPs desejados para serem feitos backups.
  • utilizará o ssh através do sshpass e fará um dump da configuração ativa para um arquivo com o IP e a data.

Esse script é totalmente adaptado no post “Backup automático de dispositivos com AirOS – Ubiquiti com SSH e Shell Script” fiz apenas alguns pequenos ajustes.

Já o script para serem configurados nos Mikrotiks, e serem agendados para rodar por lá, realizam o backup local, enviam o arquivo para o FTP e posteriormente apagam os arquivos.

Abaixo o script para ser rodado direto no terminal:


/system scheduler
add interval=1d name=ftp_bkp on-event=ftp_bkp policy=\
 ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
 start-date=nov/07/2014 start-time=21:00:00
/system script
add name=ftp_bkp policy=\
 ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
 source="# automated backup 2 External ftp\r\
 \n\r\
 \n# ftp configuration\r\
 \n:local ftphost \"192.168.0.1\"\r\
 \n:local ftpuser \"mkt_bkp\"\r\
 \n:local ftppassword \"SUA_SENHA_FTP\"\r\
 \n:local ftppath \"/home/mkt_bkp/bkp_RouterOS\"\r\
 \n\r\
 \n# months array\r\
 \n:local months (\"jan\",\"feb\",\"mar\",\"apr\",\"may\",\"jun\",\"jul\",\"a\
 ug\",\"sep\",\"oct\",\"nov\",\"dec\");\r\
 \n\r\
 \n# get time\r\
 \n:local ts [/system clock get time]\r\
 \n:set ts ([:pick \$ts 0 2].[:pick \$ts 3 5].[:pick \$ts 6 8])\r\
 \n\r\
 \n# get Date\r\
 \n:local ds [/system clock get date]\r\
 \n# convert name of month to number\r\
 \n:local month [ :pick \$ds 0 3 ];\r\
 \n:local mm ([ :find \$months \$month -1 ] + 1);\r\
 \n:if (\$mm < 10) do={ :set mm (\"0\" . \$mm); }\r\
 \n# set \$ds to format YYYY-MM-DD\r\
\n:set ds ([:pick \$ds 7 11] . \$mm . [:pick \$ds 4 6])\r\
\n\r\
\n# file name for system backup - file name will be UMDB-servername-date-tim\
e.backup\r\
 \n:local fname1 (\"/UMDB-\".[/system identity get name].\"-\".\$ds.\"-\".\$t\
 s.\".backup\")\r\
 \n# file name for config export - file name will be UMDB-servername-date-tim\
 e.rsc\r\
 \n:local fname2 (\"/UMDB-\".[/system identity get name].\"-\".\$ds.\"-\".\$t\
 s.\".rsc\")\r\
 \n\r\
 \n# backup the data\r\
 \n/system backup save name=\$fname1\r\
 \n:log info message=\"System backup finished (1/2).\";\r\
 \n/export compact file=\$fname2\r\
 \n:log info message=\"Config export finished (2/2).\"\r\
 \n\r\
 \n# upload the system backup\r\
 \n:log info message=\"Uploading system backup (1/2).\"\r\
 \n/tool fetch address=\"\$ftphost\" src-path=\$fname1 user=\"\$ftpuser\" mod\
 e=ftp password=\"\$ftppassword\" dst-path=\"\$ftppath/\$fname1\" upload=yes\
 \r\
 \n# upload the config export\r\
 \n:log info message=\"Uploading config export (2/2).\"\r\
 \n/tool fetch address=\"\$ftphost\" src-path=\$fname2 user=\"\$ftpuser\" mod\
 e=ftp password=\"\$ftppassword\" dst-path=\"\$ftppath/\$fname2\" upload=yes\
 \r\
 \n\r\
 \n# delay time to finish the upload - increase it if your backup file is big\
 \r\
 \n:delay 60s;\r\
 \n# find file name start with UMDB- then remove\r\
 \n:foreach i in=[/file find] do={ :if ([:typeof [:find [/file get \$i name] \
 \"UMDB-\"]]!=\"nil\") do={/file remove \$i}; }\r\
 \n:log info message=\"Configuration backup finished.\";"

Esta é a minha implementação da proposta encontrada em no post “Automated RouterOS Backup to FTP“. Só atentem para adaptar a seção abaixo para suas necessidades:

[pre]n
:local ftphost “192.168.0.1”
:local ftpuser “mkt_bkp”
:local ftppassword “SUA_SENHA_FTP”
:local ftppath “/home/mkt_bkp/bkp_RouterOS”[/pre]

Espero que estes scripts possam ajudá-los, como a mim.😀

 

Obs.: Dos links consultados apresentados não são necessariamente os originais, mas o que eu consultei na internet.



Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s