Manual
do
Maker
.
com
Fazer a automação de backup de switch foi uma de minhas prioridades quando trabalhei na Catho. Detesto fazer tarefas rotineiras quando essa tarefa pode ser feita por robôs, então decidi fazer um pequeno conjunto de automação para me livrar da tarefa e poder assim fazer coisas mais divertidas. Fiz o conjunto de backup para switches summit e para switches Dell, porque o processo para cada um era um pouco diferente, mas valia muito a pena o trabalho, que como você pode ver, não é tanto; ou melhor, quase nenhum. Para quem não conhece, switches Summit x650 são switches de borda de rede, custando dezenas de milhares de reais cada, o que no primeiro momento já me gerou um orgulho, afinal, custa o preço de um carro. Depois dessa tarefa, pude me dedicar a fazer stacking dele, mas acho que essa tarefa foi tão rápida quanto os scripts, com a diferença que o backup era diário. Hoje encontrei os scripts python e shell script para a tarefa de coleta e gerenciamento de backup. Gostei de fazer esse robô pelo fato de estar tratando com outro tipo de hardware que não x86. Antes do código, vale lembrar que o python trabalha conforme a indentação, então por favor, verifique o código antes de rodá-lo. Dei-lhe o nome de 'Telget', por fazer 'get' através da telnetlib, lendo o stdout.
#!/usr/bin/env python
import sys, telnetlib
try: host = sys.argv[1]
except IndexError: print "Uso: %s IP" % sys.argv[0]
print "Ex.: %s 200.201.202.203" % sys.argv[0]
sys.exit()
#Fulano, Ciclano
user = 'admin'
password = '123Senha321'
tn = telnetlib.Telnet(host)
tn.read_until('login: ')
tn.write(user)
print "usuario:.........[PASS]"
tn.read_until('password: ')
tn.write(password)
print "password:........[PASS]"
tn.read_until('# ') #scan for prompt
tn.write('disable clipagingnshow configurationn')
d = tn.read_until('fulano.3 # ')
tn.close()
try:
insere=open(sys.argv[2],"w")
insere.write(d)
except: print "Uso: %s IP NOME_DO_ARQUIVO" % sys.argv[0]
print "Ex.: %s 200.201.202.203" % sys.argv[0]
sys.exit()
print "Finalizado com sucesso."
O script shell que faz o rotate dos backups:
#!/bin/bash
DIA=`date '+%d'|sed -e 's/^0//'`
MES=`date '+%m'`
DATA="$DIA-$MES"
INICIO=`date`
#Faz o backup dos switches especificados na sequencia
#Nao tem verificacao nessa etapa
# baixa a saida para arquivo
gera_bkp(){
for i in `ls -l /root/telget/*.telget|awk '{print $NF}'|sed -e 's/.telget//g; s//root/telget///g'`;
do
echo " "
NOME="$i-$DATA.bkp"
echo $NOME
/root/telget/$i.telget $i $NOME
sed -e '1,4 d;$ d' $NOME >/stage/switches/$NOME
rm -f /root/telget/$NOME
done
}
#Apos o bkp, os arquivos com mais de 7 dias de vida sao removidos
#Ha uma verificacao para saber se a variavel esta vazia. Isso eh para evitar um "rm -f //"
#Se a variavel estiver vazia, o script sai. Talvez a melhor posicao para remocao seja apos o mail
remove_antigos(){
find /stage/switches/ -maxdepth 1 -daystart -atime +6 -exec rm -f {} ;
}
#Envia mail do termino do bkp. O inicio precede as funcoes. O horario final eh coletado nessa funcao
#O diretorio eh medido e o numero de arquivos contados
#O titulo tambem estah definido dentro dessa funcao
envia_mail(){
FIM=`date`
TAMANHO=`du -sh /stage/switches`
NUM_ARQUIVOS=`ls -l /stage/switches/*.bkp|wc -l`
TITULO=".::_Backup_dos_Switches_::."
echo "Backup de switches Gerado (Summit).
INICIO:$INICIO
FIM:$FIM
Tamanho de diretorio: $TAMANHO
Numero de arquivos: $NUM_ARQUIVOS" >/tmp/bkp_sw.txt
cat /tmp/bkp_sw.txt | mail -s $TITULO admin@seuDominio.com.br
}
echo "Gerando BKP:"
gera_bkp
echo " "
echo "Geracao de BKP........................[OK]"
remove_antigos
echo "Remocao dos antigos BKPs..............[OK]"
envia_mail
echo "Envio de email........................[OK]"
Simples e objetivo, "desescravizando" o profissional de redes, graças a 2 simples scripts que permitiram a automação de backup de switch com esforço 0. Gostou?
Uma leitura que considero agradável é sobre um tunning que tive que fazer em um sistema certa vez. Se está com alguns minutos livre, recomendo.
Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.
Próximo post a caminho!
Revisão: Ricardo Amaral de Andrade
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.