Menu Principal

terça-feira, 10 de setembro de 2013

Administração de Equipamentos Cisco com Scripts (EXTRAÍDO DO IMASTER)


Cygwin: é um ambiente Linux-like para Windows. Ele é composto de uma série de ferramentas que provêm as mesmas funcionalidades de um shell Linux na linha de comandos do Windows. Essas ferramentas podem ser utilizadas para automatizar tarefas. É claro, você pode também utilizar Linux diretamente para executar essas tarefas. A minha escolha por Cygwin foi devido a necessidades específicas minhas.
Pumpkin TFTP: É o melhor software de TFTP disponível, na minha opinião. É utilizado para backup das configurações, software, etc… Você pode optar por outro software de sua preferência, mas eu recomendo fortemente o Pumpkin.
Netcat: segundo o site oficial, Netcat é o canivete suiço do TCP/IP. É uma ferramenta que lê e grava dados através de uma conexão de rede. Eu utilizo o Netcat para conexão remota aos roteadores, simulando ao telnet. O Netcat provê funcionalidades adicionais ao telnet, quando usado em scripts de shell. O Netcat está incluído nas ferramentas do Cygwin, caso você resolva utilizá-lo.
Scripts: desenvolvi uma série de scripts em shell para as tarefas rotineiras em redes Cisco, como alteração de senhas, backup de configurações, inventário de Hardware. Todos scripts têm o mesmo funcionamento básico: um arquivo contendo a lista com os endereços IP dos equipamentos é percorrido, conexão aos equipamentos e a execução dos comandos desejados. A seguir, mostraremos alguns exemplos desses scripts:
Alteração de Senha de Telnet e Enable
Este script conecta aos equipamentos e altera a senha de enable e telnet. O arquivo devicelist contém a lista dos equipamentos que devem ter sua senha alterada. Seu formato é:
pae36rt01 10.1.1.1
spo36rt01 10.1.1.5
bhe17rt01 10.1.1.7
sdr28rt02 10.1.1.13
Abaixo o script:
#!/bin/bash
########################################################
# trocasenha.sh: conecta aos routers para alteração de senha
# Pre-requisito: devicelist: arquivo contendo lista de equipamentos
#
#
########################################################
# porta do telnet
porta=23
# percorre devicelist e lê o nome do equipamento e seu endereço IP
cat devicelist | while read rtrname ipaddress
 do
 # sequência de comandos para login nos routers e troca das senhas
  comando=’oldpw\nenable\noldpw\nconf t\nline vty 0 4\npassword     newpw\nexit\nenable secret newpw\nexit\nexit\nwrite mem\nexit\n’

# executa os comandos e grava um arquivo de log
  echo -e $comando|nc $ipaddress $porta > /var/log/alterasenha.log
 done
No script acima, a sequência de comandos a serem aplicados nos roteadores é armazenada na váriavél comando. A sequência de escape \n separando os comandos corresponde a tecla enter pressionada no teclado. Notem, em itálico, as senhas antigas para login e as novas senhas. Estas senhas devem ser alteradas, conforme a sua configuração. Também recomendo que os scripts sejam armazenados e executados somente de computadores confiáveis.
A próxima sequência conecta aos routers e executa os comandos. O resultado da alteração é gravando do arquivo alterasenha.log. Como esse arquivo contêm as novas senhas em modo texto, ele deve ser apagado após a verificação.
Abaixo uma forma mais simplificada do mesmo script, mas com os comandos armazenados num arquivo externo. A desvantagem desse método é não poder usar variáveis nos comandos aplicados ao router. Este mesmo método pode ser aplicado para todos os outros scripts neste artigo:
#!/bin/bash
########################################################
# trocasenha2.sh: conecta aos routers para alteração de senha
# Pre-requisito: devicelist: arquivo contendo lista de equipamentos
#
#
########################################################
# porta do telnet
porta=23
# percorre devicelist e lê o nome do equipamento e seu endereço IP
cat devicelist | while read rtrname ipaddress
do
 nc $ipaddress $porta < commands.in
done
O arquivo commands.in tem é simplesmente a sequência de comandos que serão executados nos roteadores:
oldpw
enable
oldpw
conf t
line vty 0 4
password newpw
exit
enable secret newpw
disable
exit
Backup das Configurações
O próximo script faz backup das configurações dos roteadores. Assim como o script para troca de senha, ele precisa de um arquivo como a lista dos dispositivos – no mesmo formato que o script anterior. É necessário também que o TFTP server esteja ativo, para que os arquivos sejam copiados.
#!/bin/bash
########################################################
# backupconfig.sh: faz backup das configurações dos equipamentos e grava 
# nome de arquivo indicando equipamento e hora da gravacao
########################################################
# porta do telnet
porta=23
cat devicelist | while read rtrname ipaddress
# armazena hora e data atual
time=`date +%d%m%y%H%M`
do
 # sequência de comandos para login nos routers e execução do comando
 #copy running-config tftp://tftpserver


 comando="oldpw\nenable\noldpw\ncopy running tftp://10.1.2.1/$rtrname-$time.txt\n\n\nexit\nexit\n"

 echo -e $comando | nc $ipaddress $porta
done
No script acima a configuração é copiada para o servidor TFTP. O nome do arquivo gravado conterá o home do equipamento (armazenado na variável $rtrname) e a data e a hora do backup (armazenados na variável time).
Coleta de informações
Algumas vezes é necessário capturar informações dos equipamentos para análise, como por exemplo os logs dos routers, ou informações sobre utilização dos links e CPU.  Utilizo este script para capturar essas informações e gravar em um arquivo que pode, posteriormente, ser analizado utilizando outros utilitários de shell.
#!/bin/bash
########################################################
# netshow.sh: grava configuracao, logging e show verion  em um arquivo
#
########################################################
# porta do telnet
porta=23
# percorre o arquivo devicelist e lê o nome do equipamento e seu
# endereço IP

cat devicelist | while read rtrname ipaddress
do

# sequência de comandos para login nos routers e execução dos comandos # show running-config, show version e show logging

comando="oldpw\nenable\noldpw\nterm len 0\n show running-config\nshow version\nshow logging\nexit\nexit\n"

 # executa o comando e grava em um arquivo com o nome do dispositivo
 echo -e $comando | nc $ipaddress $porta > /var/rtr/$rtrname-coleta.txt
done
Como todos os outros scripts, este usa um arquivo com a lista de equipamentos no mesmo formato do script para alteração de senhas.
Inventário de Equipamentos
Este último script é um pouco mais complexo. Ele coleta as informações do comando show version e filtra as informações de modelo, memória e versão de software e grava dentro de uma arquivo .csv, para posterior análise no Excel.
#!/bin/bash
########################################################
# inventario.sh: conecta aos routers  e grava em um arquivo as informacoes
# de CPU, memoria e software dos equipamentos
########################################################
# porta do telnet
porta=23
# percorre o arquivo devicelist e lê o nome do equipamento e seu endereço IP
cat devicelist | while read rtrname ipaddress
do
 tempfile="/tmp/~$rtrname.tmp"

 # sequência de comandos para login e execução do comando show version
 comando="oldpw\nenable\noldpw\nshow version\nexit\nexit"

 # executa os comandos e grava em um arquivo temporário
 echo -e $comando | nc $ipaddress $porta > $tempfile

 # extrai dados de memoria, modelo e versão de software do router.
 memoria=`cat $tempfile | grep "bytes of memory." | awk ‘{print $8}’`
 modelo=`cat $tempfile | grep "bytes of memory." | awk ‘{print $2}’`
 imagem=`cat $tempfile | grep "^System image" | awk ‘{print $5}’`

 # grava as informações num arquivo .csv, para ser importado no Excel
 echo $modelo,$memoria,$imagem >> inventario.csv

 # remove o arquivo temporário
 rm $tempfile
done
O script armazena em variáveis as informações desejadas sobre os equipamentos. Notem que a filtragem é feita procurando-se strings específicas na saída do comando show version. Essas strings são comuns a vários equipamentos Cisco. Eu as utilizo para inventário de roteadores, switches e access-points. As informações são gravadas no arquivo inventario.csv para que eu possa abri-lo no Excel e editar as informações. Por último, pode-se observar ainda que o comando show version é gravado num arquivo temporário, que depois será removido.
Os scripts analisados neste artigo são bastante simples. Eles foram criados para atender a necessidades específicas minhas ou de clientes. Você pode usá-los como base para desenvolver scripts que atendam as suas próprias necessidades. Pode também incrementá-los para resolver tarefas mais complexas.  Sua criatividade e conhecimento de shell scripts é o limite. Espero com esse artigo ter contribuído para a diminuição do tempo gasto gerenciando

Nenhum comentário:

Postar um comentário