Fazendo backups de devices por SSH com script em expect e bash

Automatizar processos é sempre importante. Não há cabimento que em pleno 2017 pessoas façam processos de backup em empresas de maneira manual (ou pior, que nem exista backup, trabalhando na sorte).

Este post surgiu da necessidade em meu trabalho de rodar comandos de backup em um appliance e copiar esse arquivo de backup gerado para um lugar seguro, que tenha a cópia e segurança. Diferente de equipamentos que tem só configuração em texto plano, como Cisco, Alcatel-Lucent, Datacom por exemplo e que já possuem softwares que fazem essa função, no trabalho usamos o RANCID, dê uma procurada, temos onde trabalho, a solução de wireless Aruba, que o backup é um conjunto de arquivos compactados. Junto com a controller existe um software da própria Aruba para gerenciamento das controladoras que faz backup, chamado AirWave. Mas para fazer backup ela precisa ter acesso a leitura e gravação e por motivos de segurança deixamos o software apenas com leitura, ele ficou exclusivamente para gráficos, relatórios, rastreabilidade de dados, etc. Assim, ficamos sem ter uma solução nativa para realizar backup das controllers. Há quem contrate apenas a solução de access points e controllers, assim este material será bem útil.

As próprias controllers, por SSH ou por browser, possui uma ferramenta manual de backup. Basicamente você loga por SSH e em modo enable você dá o comando backup flash e é gerado dentro da flash da controller o arquivo flashbackup.tar.gzvocê copia o arquivo por scp para um servidor e tem o backup. Qual o problema? ter que fazer isso manualmente, sempre. Assim, procurando uma forma de fazer de forma automatizada e com base em scripts disponíveis que eu adaptei para funcionar corretamente e melhorei para as minhas necessidades nasceram esses scripsts. Deixo claro que fiz para as controllers Aruba, mas você pode fazer para qualquer equipamento que tenha SSH e que você precise realizar um conjunto de comandos e extrair arquivos deste local.

Pra ficar mais didático vou comentar apenas nos scripts, copie eles, salve e dê permissões de execução com chmod +x [nome_do_arquivo]

 

O script CopiaController

#!/usr/bin/expect -f
#Programa de backup da Controller Aruba - modulo copia controller - versao 0.1
#Wagner Bonifacio Leite

#variavel da controller 1
set controller1 "192.168.0.6"

#variavel da controller 2
set controller2 "192.168.0.7"

#variavel do servidor de destino do arquivo
set server "192.168.0.100"

#variavel de data
set data [exec date +%d-%m-%y]

#laco de repeticao para fazer uma controller por vez limitado a duas
for {set c 1} {$c <= 2} {incr c 1} {

#condicional para variavel controller -unica, para laço de repeticao-
if { $c == 1} {

#se variavel verdadeira seta controller 1 como controller
set controller [lindex $controller1 0]
 
 } else {

#senao seta controller 2 como controller
set controller [lindex $controller2 0]

}

#loga SSH na controller
spawn ssh [usuario_da_controller]@$controller
sleep 2
#envia a senha para logar na controller
expect {
"*word:" {send "[senha_da_controller]\r"}
}
sleep 1
#passa a controller para enable mode com o comando enable
expect {
"*>" {send "en\r"}
}
sleep 1
#senha de enable
expect {
"*word:" {send "enable\r"}
}
sleep 1
#comando que gera o backup backup flash
expect {
"#" {send "backup flash\r"}
}
sleep 60 
#envia backup por SCP
expect {
"#" {send "copy flash: flashbackup.tar.gz scp: $server [usuario_do_server] flashbackup$c-$data.tar.gz\r"}
}
sleep 1
expect {
"*word:" {send "[senha_do_server]\r"}
}
sleep 15
#Deleta backup da controller
expect {
"#" {send "delete filename flashbackup.tar.gz\r"}
}
sleep 1
#sai da controller
expect {
"*#" {send "exit\r"}
}
sleep 5
expect {
"*>" {send "exit\r"; exp_continue}
}
}

#roda o script auxiliar para mover da pasta padrao para uma propria para ter snapshots de backup
exec /backup/BackupController/CopiaArquivos.sh >@stdout

#cria o arquivo de log para confirmar que executou todos os scripts
exec /backup/BackupController/Logs.sh >@stdout

#encerra o script
expect eof

E os scrips auxiliares CopiaArquivos.sh e Logs.sh

CopiaArquivos.sh

(lembro que o caminho /backup/BackupController/Controller/ foi criado por mim para a organização dos arquivos, faça a sua escolha)

#!/bin/sh
#Programa de backup da Controller Aruba - modulo copia de arquivos - versao 0.2
#Wagner Bonifacio Leite

#variavel de data
data=$(date +"%d-%m-%y")

#laco de repeticao para fazer a copia um arquivo por vez limitado a dois
for c in 1 2

do
 
 #comando de copia do arquivo da origem padrao do scp para a pasta destino
 cp /home/[usuario_do_server]/flashbackup$c-$data.tar.gz /backup/BackupController/Controller/
 echo "arquivo flashbackup$c-$data.tar.gz copiado para a pasta /backup/BackupController/Controller/"

sleep 3

#comando de deletar arquivo na origem
rm -Rf /home/[usuario_do_server]/flashbackup$c-$data.tar.gz
echo "arquivo flashbackup$c-$data.tar.gz apagado na origem"

done

Logs.sh

#!/bin/sh
#Programa de backup da Controller Aruba - modulo log - versao 0.1
#Wagner Bonifacio Leite

#variavel de data
data1=$(date +"%d-%m-%y")

#grava em arquivo os dados
echo "BACKUP REALIZADO" >> logs/CONTROLLER-$data1.log
echo "DATA - $data1" >> logs/CONTROLLER-$data1.log

E para finalizar a configuração de crontab

No Linux dê o comando crontab -e

Adicione a linha aonde está o script principal, colocarei o que fiz, altere conforme seu uso

00 23 * * * exec /backup/BackupController/CopiaController >> /backup/BackupController/logs/log.txt

Para verificar se está correto a linha no seu cron, dê o comando crontab -l.

No meu caso faz backup todo dia as 23h00, modifique conforme suas necessidades.

Bom, os scripts são esses, espero que quem gerencia controllers Aruba tire proveito e quem precisa de um script para acesso a SSH também tire proveito. Até mais.

 

 

Criando uma VM do MacOS no seu Windows

Desculpem o sumiço. Me acostumei a tuitar e sintetizar tanto que as vezes fica parecendo repetitivo escrever os tuites como um texto aqui. Preciso voltar a fazer isso, escrever aqui, porque as informações se perdem e muitas precisam de uma atenção especial.

Esse é um caso. Precisa de uma explicação maior e é o que pretendo fazer.

Quem me conhece sabe que uso em casa Mac (tenho um Macbook Pro Retina inicio de 2015, substituto do Macbook Pro final 2009) e no trabalho uso Windows no desktop e Linux e Windows Server em servidores. E uma coisa que sempre senti falta com o Mac era ter um ambiente que eu pudesse fazer cagadas, testes, etc e depois de tudo acertado aplicar na minha máquina. Antes de ter Mac eu fazia muito isso (por volta de 2009 onde já existia a VMWare e nascia o Virtual Box).

Bom, vamos a preparação do sistema!

Você vai precisar de:

* Lembre-se que a responsabilidade com as licenças é integralmente sua.

Preparando o VMWare:

Com o VMWare instalado, conforme informado, baixe o unlocker do link acima e faça o unzip. O unlocker é bem completo e pode desbloquear o VMWare em diferentes sistemas, como Linux, no próprio Mac e no ESXi. Explicarei aqui apenas para Windows, mas você pode adaptar para o seu sistema operacional.

Com o botão direito clique em win-install.cmd e execute o programa como Administrador

Instalando o unlocker

A instalação será feita. Tenha internet sem proxies ou firewall no caminho pois ele baixará o VMWare Tools para Mac que não vem na instalação padrão deste VMWare que você utilizará.

Instalando...

Quando terminar seu sistema já está apto a instalar qualquer sistema MacOS.

Criando a VM do Mac OS:

Não ensinarei aqui a instalar o OSX em si, ensinarei apenas as configurações necessárias para fazer isso.

Faça download da ISO que deixei disponibilizado acima. Não sei por quanto tempo ela estará disponível.

Abra o VMWare

VMWare

Clique em “Create a New Virtual Machine”

Passo 1

Clique em “Next >”

Aparecerá a possibilidade de criar VMs do Mac OS, escolha “Apple Mac OS X e em version escolha ” OS X 10.11″

Passo 2

Clique em “Next >”

Nomeie o sistema como você deseja e escolha o local mais conveniente para armazenar os arquivos da VM. Se não sabe nada disso, deixe no local padrão.

Passo 3

Clique em “Next >”

Mude o tamanho do HD para no mínimo 80GB e deixe o arquivo como único, assim selecione “Store virtual disk as a single file”

Passo 4

Clique em “Next >”

Passo 5

Clique em “Customize Hardware” para alterar a utilização de memória e outros ajustes.

Passo 6

  • Mude a memória para 4GB (recomendado) ou deixe em 2GB (mínimo). Com 2 GB o sistema ficará lento.
  • Mude o número de processadores para o máximo possível em sua máquina, no meu caso são 4.
  • Mude em “USB Controller” selecionando todas as opções e use a compatibilidade “USB 3.0”
  • Aponte a ISO do El Capitan no CD/DVD

Passo 6 B

Clique em “Close” e depois em “Finish”.

Agora vem a parte mais importante desta configuração, vá a pasta onde foi instalada a VM e edite o arquivo .vmx com um editor de texto qualquer (notepad, notepad++, etc).

Passo 7

Insira no final do arquivo a seguinte string

smc.version = “0”

Passo 8

Salve o arquivo.

Agora você pode abrir a VM e seguir a instalação.

Espero que você tenha proveito e que este tutorial te ajude. Precisando de ajuda peça nos comentários que tentarei ajudar da melhor maneira possível.

5 extensões que fazem a diferença no Firefox

Sou fã do Firefox, desde quando nem era Firefox, era o Phoenix, depois passou para Firebird, que causou confusão com o banco de dados, ai ficou com seu nome definitivo.

Cinco motivos me fizeram gostar deste browser: Multiplataforma, Padronização, Segurança, Velocidade e Addons.

Esses pontos sempre fizeram e fazem a diferença frente aos outros browsers. Tirando o Internet Explorer, outros browsers conseguem cumprir os quatros motivos que citei, o diferencial do Firefox são os addons.

Assim resolvi listar meus addons, os 5 que uso e não deixam meu browser lento.

Mozilla Weave: Este é o coringa de quem usa várias máquinas. Ele é um projeto da própria Mozilla que centraliza favoritos, senhas e histórico. Assim de qualquer máquina que você usa terá um browser padrão, com tudo o que você precisa.

Ele substitui a carência de quem usava o Google Browser Sync e ainda faz melhor.

Dica: quem usa esse addon não se preocupa com formatação de máquina.

Reliby: Pra quem usa RSS, um grande problema é que a atualização dos RSSs no Firefox são feitos de um modo meio holístico, que ninguém sabe quando é feito, se é feito de tempos em tempos, ou quando é aberto o aplicativo.

Assim, pra resolver esse problema aparece o Reliby, que com um simples botão ele atualiza todos os seus RSSs.

FoxyProxy (standard): Em corporações, quem tem vários proxys e quer agilidade na troca dos mesmos, este é o addon.

Aonde trabalho temos vários proxys. Muitas vezes precisamos testar como está cada proxy, além de permissionamentos, afinal cada proxy tem uma função, bloqueia certas páginas e libera outras.

Vacuum Places Improved: O Firefox possui um banco de dados interno, SQLite, que dá facilidade de gerenciamento de informações. Mas como todo banco de dados, de tempos em tempos precisa ser otimizado. Este addon faz justamente isso, sem esforço e complicação.

SearchPreview: Buscadores, de longe, são os sites mais acessados da internet. Para facilitar existe este addon que faz um preview da página, assim dá pra avaliar se as paginas listadas tem conteúdo parecido ou se são sites bot que tem programas maliciosas.