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.




segunda-feira, 15 de janeiro de 2007

Acesso Remoto Dinâmico

Neste artigo falarei de uma ótima opção o acesso a uma máquina remotamente. Apresento a vocês o LogMein.

O LogMein é uma ferramenta de acesso remoto onde você não precisa ter um endereço IP fixo na máquina host (a que será controlada). Para começar a usufruir das funcionalidades do LogMeIn é necessário que você realize um cadastro (é bem rápido e sem muitos detalhes), depois você instala o client na máquina host e a única coisa que será preciso é uma conexão com internet, seja ela qual for (Velox, Rádio, a Cabo, Discada, etc). O acesso é bastante semelhante a um VNC.

Segue abaixo um passo a passo:

Depois de entrar no site, faça o cadastro e logue nele a partir da máquina que será controlada.

Clique em "Add Computer" para iniciar a instalação:










Entre as versões disponíveis, escolhemos logicamente a "Free". Clique em "Next".




















Para quem utiliza o SP2 do Windows XP, clique em executar quando solicitado:

















E comece a baixar o client:












Após o download do client a instalação começará automaticamente:




















Aceite os termos e condições.




















Escolha a opção “Typical”.



















No campo Description, coloque um nome para que você identifique a maquina a qual você quer acessar.



















Pronto, a instalação irá continuar automaticamente.



















Depois de tudo instalado ficará na barra do systray, o ícone do LogMein disponível para conexão.




















Entre em qualquer computador com acesso a internet, e se logue novamente. Perceba que as máquinas que você instalou o LogMein estarão listadas na pagina principal da sua conta, e então selecione uma da lista onde está disponível para conexão:

























Você precisará de uma conta e senha (do Windows) criada na máquina em que você deseja conectar.
















Após o acesso, uma tela com várias opções de gerenciamento da máquina aparecerá. Nela é possível ver a utilização de memória da máquina, a utilização dos HDs, todos os processos que estão rodando na máquina e a utilização de memória e processador de cada um, entre outras várias opções.



















Agora para acessar a maquina remotamente clique em "Remote Control", e depois clique em "Go".















Em seguida a tela de acesso remoto a máquina aparecerá. Na tela abaixo estão indicas as opções de visualização, enviar um Ctrl+Alt+Del e entre outras.
















Perceba que em nenhum momento foram mencionados números de IP.

Existem outras versões que são pagas e que possuem várias outras utilidades.

Obrigado a todos e até a próxima...