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.

 

 

O novo Macbook Pro (Touch Bar) – ou a falta de padrão atual na Apple

macbook-pro-2016

Sou analista de formação e faço análises (duh) e por não deixa-las registradas, acabam passando batido e não consigo mostrar no futuro os pontos que trouxe na análise feita. Uns 5, 6 anos atrás fiz uma análise que a plataforma RISC voltaria a dominar o mercado sob o manto dos processadores ARM e que eles iriam até migrar para os notebooks. Não fiz um texto disso, fiz tuítes. A conta onde foram feitos os tuítes não existe mais. É uma lembrança só minha que eu previ isso. Desde que disse isso Intel tentou emplacar processadores em smartphones, não foi bem sucedida e agora vai licenciar a produção de processadores ARM e dizem que ela pode levar esses processadores para Macbooks no futuro. Análise. Falta de registro. Eu.

Bom, após uns dias de maturação de (mais) uma keynote sem graça da Apple (sendo sincero, são raras as que empolgam no mercado inteiro, mesmo com produtos bons, saudades Steve Jobs) ficaram três pontos distintos do novo Macbook Pro: inovação, tendências e falta de padrão da Apple.

Inovação (digam oi Touch Bar e Thunderbolt USB-C!)

Começo dizendo que a ideia do Touch Bar é a melhor implementação de touchscreen para um notebook sem o uso da tela, com múltiplas funções e de forma que REALMENTE será utilizado desde que pensaram em notebooks touchscreen ou com canetas (não coloco no mesmo grupo notebooks que viram tablets por motivos óbvios)

Quem tem ou teve notebook com touchscreen realmente não usa a função, porque suja a tela, pelo sistema operacional não se comportar bem com o toque dos dedos (ainda em 2016, mesmo com Windows 8, 8.1, 10), pelo desconforto de levantar os braços toda hora. O uso é esporádico muitas vezes que acontece na verdade de forma acidental, vamos ser bem francos. A tela touchscreen é nitidamente aquela ideia que parece ótima mas que na prática não é tão boa assim.

O Touch Bar não mexe na ergonomia da utilização, aproveita uma zona morta que a grande maioria das pessoas não utiliza (principalmente no Windows, conheço pessoas que ficam anos sem utilizar as teclas de função, nem um mísero F4 que é uma tecla popular, em conjunto com a tecla ALT, como por exemplo ALT+F4, mas NÃO TESTE AGORA!) e diversos aplicativos tem barras que ocupam espaço da tela que poderiam ocupar muito bem essa área da Touch Bar, ficando mais próxima da mão do usuário.

As demonstrações de programas como Photoshop, o de áudio e mesmo o Safari foram realmente empolgantes, mostraram que desenvolvedores tem um mundo novo de possibilidades pela frente para dar espaço na tela e deixar mais proximo das mãos comandos mais utilizados, sem limitações de tamanho de teclas, sem limitações de cores, de fabricante de teclado, de nada. Integrado ao hardware do equipamento.

A chance do Touch Bar crescer, assim como o Touch Pad é gigantesca, mas acho pouco provável que num primeiro momento ele substitua as teclas.

Sobre as portas Thunderbolts USB-C com 40Gbps de velocidade, com capacidade de alimentação e uso de uma infinidade de periféricos, tipos de interface, era impensável a alguns anos. Precisamos só lembrar que essa taxa de dados é possível apenas em 50cm, mais que isso cai para 20Gbps (1mt ou 2mt). É um padrão em crescimento tão vertiginoso que é mais rápido que o padrão Ethernet 802.3, que em cabo CAT7, também metálico, só é capaz de trafegar até hoje 10Gbps (com diversas limitações de distância, inclusive, no caso 10mt, poucos switches disponíveis, etc).

Tendência (Touch Bar e USB-C se espalhando por aí)

É inegável como a Apple dita tendências. Dá pra citar um grande número de itens removidos e adicionados em que ela foi ou pioneira ou a maior divulgadora e com o Touch Bar podemos dizer a mesma coisa. A chance de em um ano encontrarmos um notebook Samsung ou Asus algo similar a Touch Bar é muito grande. Muito grande mesmo. Esse é o campo em que a Apple é mais Apple.

Falta de padrão na Apple (Steve Jobs estaria revirando no túmulo, caso tivesse sido?)

Juro que não me entra na cabeça como é lançado um iPhone 7 sem conector de 3,5mm de audio e dois meses depois o novo Macbook Pro não vem com conector lightning para usar o fone que veio com o iPhone, ou sem conector nenhum, morte ao analógico, diriam, ou, de forma mais sensata, por que o iPhone não usa USB-C e assim seu fone seria USB-C e usaria qualquer uma das quatro portas do Macbook Pro?

A Apple está deixando o equipamento mais leve mas a mochila mais poluída de cabos e acessórios e isso não faz o menor sentido.

Entendo que cada vez menos precisamos conectar as coisas fisicamente, estamos usando redes wireless e nuvem, entendo que tecnologias ultrapassadas devem ser superadas e principalmente, quando se prega um ECOSSISTEMA ele tem que ter coerência.

A Apple está refletindo seus momentos sem Jobs, onde cada setor criava seu feudo e não havia o elo que fazia o ecossistema ter coerência, era para John Ive estar fazendo isso, mas ou ele não tem esses poderes ou não está se fazendo forte o suficiente para isso. Está faltando insanidade para por ordem.

Resolvendo problemas com perfis no Windows

windows

Se tem algo que acontece com frequência no Windows é o perfil do seu usuário ficar corrompido. Sua máquina fica lenta, demora para logar, deslogar, para navegar na internet e principalmente, as vezes, ela loga com as configurações padrão do sistema e só volta ao normal quando você reboota a máquina. Aí você entra no usuário administrador de emergência (sempre tenha isso! Tanto no Windows, como no Linux e Mac) e lá tudo funciona muito tem obrigado.

Nesses casos formatar a máquina é uma situação extrema e desnecessária, excluir o perfil corrompido e criar um novo resolve perfeitamente seu problema. Para isso eu fiz um passo-a-passo bacanudo e simples para você seguir e ser feliz (por sua conta e risco, não venha reclamar comigo! Não conheço sua máquina nem seus hábitos de uso, adapte a sua necessidade!)

Assim, vamos começar…

1) Fazendo o backup

Você só quer sua máquina rápida não é mesmo? Não precisa perder seus arquivos. Assim vamos copiar os arquivos do seu perfil

Vá em C:\Users (ou C:\Usuários, em português), selecione a pasta do seu perfil e clique com o botão direito e selecione “Copiar”

01-02

Vá na raiz do seu HD, crie a pasta bkp (ou outra da sua preferência) e cole a pasta copiada

02-02

2) Habilitando o usuário Administrador

(que fica desabilitado a partir do Windows 7 para frente)

(meu exemplo é feito no Windows 8.1, não tenho outros sistemas para demonstrar, adapte ao seu)

Clique no ícone do Windows com o botão direito, selecione “Gerenciamento do Computador”

Ou no executar digite compmgmt.msc

03

Clique em “Ferramentas do Sistema” 1, “Usuários e Grupos Locais” 2, “Usuários” 3 e selecione o usuário Administrador 4

04

Clique com o botão direito e escolha “Definir Senha…”

05

Clique em Prosseguir

06

Digite a senha (ao seu gosto e que você se lembre)

07

Agora vamos habilitar o usuário (ele não habilita sem uma senha e por padrão ele não tem senha) com o botão direito clique em “Propriedades”

08

Tire o check em “Conta Desativada, clique em Aplicar e depois em OK.

09

3) Apagando o perfil corrompido

Faça logoff no seu usuário com problemas

Faça login com o usuário Administrador (caso você tenha sua maquina em domínio lembre-se que para logar com usuário local precisa colocar o nome da máquina \Administrador ex: MICRO01\Administrador)

Selecione no teclado ao mesmo tempo as teclas WIN + PAUSE

Abrirá o Sistema, clique em “Configurações avançadas do sistema”

10-2

Na aba “Avançado” selecione o botão “Configurações” 1, na seleção “Perfis de Usuário”

11

Selecione o perfil corrompido 1 e depois clique em “Excluir” 2.

12

Agora é só logar com seu usuário que o perfil será criado do zero.

Copie com cuidado os arquivos que foram feitos backup, copie apenas os Documentos, imagens, etc. Não copie as pastas inúteis, principalmente a pasta oculta AppData.

Só apagar a pasta que fica em C:\Users não funciona porque por esse processo também é apagado as informações indesejadas de registro.