quarta-feira, 7 de março de 2007

Artigo: Administrando seus equipamentos Cisco

O objetivo desse artigo é mostrar uma eficiente maneira para você reduzir o tempo durante a administração de sua rede com equipamentos Cisco.

Realizar alterações manuais na configuração dos seus equipamentos pode tomar grande parte do seu tempo, principalmente se você administrar uma rede com grandes proporções. Imagine
você tendo que alterar manualmente a senha de acesso de seus 79 roteadores, além de você perder talvez um dia inteiro para realizar essa atividade, você estará sujeito a erros, o que pode
tornar seu equipamento inacessível remotamente ou deixá-lo com uma brecha de segurança.

A própria Cisco fornece uma ferramenta para facilitar a administração dos equipamentos, o Ciscoworks LMS. O Ciscoworks é uma ferramenta muito poderosa que traz a função de administrar
todos os aspéctos da uma rede Cisco. Mas existe uma desvantagem, o acesso a essa ferramenta é muito limitado, devido ao alto custo da sua licença.

Para facilitar segue abaixo um kit de ferramentas baseados em ferramentas freeware e alguns scripts desenvolvidos em shell que irão facilitar a sua vida de administrador. Recomendo para a
utilização dos scripts o uso do Linux, recomento a utilização do Suse ou do Debian, mas fique a vontade para utlizar a distribuição de sua escolha. Mas caso você não queira utlizar o Linux,
talvez por necessidades próprias, você pode utilizar o Cygwin, irei descreve-lo logo abaixo.

Segue a descrição do kit de ferramentas:

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. Futuramente falarei mais sobre o Cygwin, aguarde.

Pumpkin TFTP: É um bom software de TFTP, utilizado para realizar o backup das copnfigurações, IOS, etc. Essa é uma ferramente que pode ser substituida por qualquer outra que você goste.

Netcat: Uma excelente ferramenta para trabalhar com redes, de acordo com seus criadores o Netcar é o canivete suiço do TCP/IP. É uma ferramenta que lê e grava dados através de uma
conexão de rede. Ele pode ser utilizado para conexão remota aos roteadores, simulando um 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.

Agora segue uma série de scripts com tarefas rotineiras que podem ser facilmente executadas. Os scripts dependem de um arquivo contento a lista dos equipamentos que devem ser
acessados. Os scripts tem o seguinte princípio de funcionamento: eles percorrem um arquivo contento a lista dos IPs dos equipamentos, conectam ao mesmo e realizam o comando desejado.

Segue abaixo um exemplo com o formado do arquivo, no meu caso estou chamando o arquivo de "devicelist".

Formato:

Exemplo:

RT-1ATS 10.16.1.1
RT-2ATN 10.16.1.2
SW-4ATS 10.16.1.253


Seguem os scripts:

-------------------------------------------------------------------------------------
Troca de Senhas de Enable e Telnet
-------------------------------------------------------------------------------------


#!/bin/bash

##################################################
# trocasenha.sh: conecta aos routers para alteração de senha #
# Pre-requisito: devices: arquivo contendo lista de equipamentos #
##################################################

# porta do telnet

porta=23

# percorre devicelist e lê o nome do equipamento e seu endereço IP
# sequência de comandos para login nos routers e troca das senhas
# executa os comandos e grava um arquivo de log

cat devicelist while read rtrname ipaddress
do comando='oldpw\nenable\noldpw\nconf t\nline vty 0 4\npassword newpw\nexit\nenable secret newpw\nexit\nexit\nwrite mem\nexit\n'
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 <>
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 version 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 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 em editor de planilhas.

#!/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. São utilizadas para inventário de roteadores, switches e access-points. As informações são gravadas no arquivo inventario.csv para que possa ser aberto em um editor de planilhas 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.

Estes scripts são simples e vocês podem se basear neles para criar outros que possam atender suas necessidades. Caso vocês tenham alguma dica ou algum script novo para melhorar este artigo podem entrar em contato comigo. Uma observação, o comando nc encontrado nos scripts acima é o comando da ferramentaa netcat, o mesmo pode ser substituido pelo telnet.

Obrigado a todos e até a próxima.

NOTA: Texto retirado e adaptado do artigo "Administração de Equipamentos Cisco com Scripts" feito pelo colunista Imasters Juliano Luiz.




Um comentário:

Paulo Renato disse...

CARACA!!!!... muito massa cara... vou testar assim q der... é uma mão na roda esse artigo... valeu mesmo...