UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES
FERRAMENTA PARA GERENCIAMENTO DE FALHAS EM
REDE ETHERNET BASEADA EM PROTOCOLO SNMP
RODRIGO STANGE
BLUMENAU
2008
RODRIGO STANGE
FERRAMENTA PARA GERENCIAMENTO DE FALHAS EM
REDE ETHERNET BASEADA EM PROTOCOLO SNMP
Trabalho de Conclusão de Curso submetido à
Universidade Regional de Blumenau para a
obtenção dos créditos na disciplina Trabalho
de Conclusão de Curso do curso de
Engenharia de Telecomunicações.
Prof. Francisco Adell Péricas, Mestre - Orientador
BLUMENAU
2008
FERRAMENTA PARA GERENCIAMENTO DE FALHAS EM
REDE ETHERNET BASEADA EM PROTOCOLO SNMP
Por
RODRIGO STANGE
Trabalho aprovado para obtenção dos créditos
na disciplina de Trabalho de Conclusão de
Curso, pela banca examinadora formada por:
Presidente:
______________________________________________________
Prof. Francisco Adell Péricas, Mestre – Orientador, FURB
Membro:
______________________________________________________
Prof. José Gil Fausto Zipf, Mestre – FURB
Membro:
______________________________________________________
Prof. Sérgio Vidal Garcia Oliveira, Doutor – FURB
Blumenau, 10 de Abril de 2008
Dedico este trabalho aos meus pais pelo
apoio, amor e dedicação que sempre me
forneceram. À minha irmã que sempre esteve
presente em minha vida, mesmo quando
distante. Ao carinho, paciência e amor de
minha namorada.
AGRADECIMENTOS
A Deus em primeiro lugar por todos acontecimentos e por cada obstáculo que
atravessei, que me fortaleceram e me tornaram uma pessoa melhor.
Aos meus pais por toda a dedicação em minha criação e ensinamentos, pelo amor e
carinho que nunca me faltaram e principalmente pelo caráter que me ensinaram a ter.
Ao professor Francisco Adell Péricas pela forma como conduziu seu encargo de
orientador, mesmo estando distante, forneceu a força inicial para conclusão de mais esta etapa
de minha vida.
Ao amigo Márcio Ernani Kessler por todo o apoio e auxílio que me forneceu na área
da programação.
A todos os meus amigos, os quais seria difícil citar ou chato esquecer alguém.
E finalmente a minha namorada, Elizabeth Peschke, que sempre me deu forças, apoio e
amor nas horas em que mais precisei.
“Viva como se fosse morrer amanhã e aprenda
como se fosse viver para sempre.”
Mohandas Karamchand Gandhi
RESUMO
Este trabalho apresenta os principais aspectos do gerenciamento de redes Ethernet e o
desenvolvimento de um software para monitoração de equipamentos ativos de rede. O
software a ser desenvolvido é capaz de monitorar, obter informações relevantes ao gerente de
rede (nome, versão de firmware, tempo de funcionamento, localização), avaliar o estado das
interfaces e coletar alertas dos equipamentos gerenciados por ele. A ferramenta desenvolvida
utiliza o protocolo SNMP para comunicação e gerenciamento dos equipamentos.
Palavras-chave: redes Ethernet, LAN, TCP/IP, SNMP, AutoIT, MIB.
ABSTRACT
This work presents the most important aspects of the management of Ethernet networks and
the development of a monitoring software for network equipments. The present software is
able to monitoring, information obtaining (hostname, firmware version, uptime, localization),
verify the status of interfaces and collect alerts of all equipment managed by it. The tool uses
the SNMP protocol for communication and equipment management.
Key-Words: Ethernet networks, LAN, TCP/IP, SNMP, AutoIT, MIB.
LISTA DE ILUSTRAÇÕES
Figura 1: Arquitetura dos sistemas de gerência. ....................................................................... 20
Figura 2 – Protocolo de gerenciamento SNMP. ....................................................................... 23
Figura 3 – SMI: MIB padrão SNMP. ....................................................................................... 27
Quadro 1 – Objetos da MIB-2. ................................................................................................. 29
Figura 4 – Protocolo SNMP sobre a camada de transporte. ..................................................... 32
Figura 5 – Formato das mensagens SNMP. ............................................................................. 33
Figura 6 – Exemplo de aquisição de valores pelo SNMPWALK. ........................................... 36
Figura 7 – Fluxograma do Módulo Principal. .......................................................................... 37
Figura 8 – Fluxograma da função Incluir. ................................................................................ 38
Figura 9 – Fluxograma da função Excluir. ............................................................................... 38
Figura 10 – Fluxograma da função Status. ............................................................................... 39
Figura 11 – Fluxograma da função Informações. ..................................................................... 39
Figura 12 – Fluxograma da função Syslog. .............................................................................. 40
Figura 13 – Fluxograma da função Interfaces. ......................................................................... 40
Figura 14 – Fluxograma da função Incluir da função Interfaces. ............................................. 41
Figura 15 – Fluxograma da função Status de Interfaces. ......................................................... 41
Figura 16 – Fluxograma da função Configurações. ................................................................. 42
Figura 17 – Módulo principal do software. .............................................................................. 43
Figura 18 – Interfaces para inclusão de equipamentos. ............................................................ 44
Figura 19 – Interface de informações. ...................................................................................... 45
Figura 20 – Módulo de seleção de interfaces. .......................................................................... 46
Figura 21 – Módulo de monitoramento de interfaces............................................................... 47
Figura 22 – Módulo de Syslog. ................................................................................................ 47
Figura 23 – Interface completa do protótipo. ........................................................................... 48
LISTA DE SIGLAS
ASN.1 - Abstract Syntax Notation One
CMIP - Common Management Information Protocol
FCAPS - Fault, Configuration, Accounting, Performance, Security
FDDI - Fiber Distributed Data Interface
IP - Internet Protocol
ISO - International Organization for Standartization
LAN - Local Area Network
MAN - Metropolitan Area Network
Mbps - Megabits por segundo
MIB - Management Information Base
OSI - Open System Interconnection
RMON - Remote Monitoring
SNMP - Simple Network Management Protocol
TCP - Transmission Control Protocol
WAN - Wide Area Network
SUMÁRIO
1 INTRODUÇÃO .................................................................................................................. 11
1.1 JUSTIFICATIVA .............................................................................................................. 12
1.2 DEFINIÇÃO DO PROBLEMA ........................................................................................ 12
1.3 QUESTÕES DE PESQUISA ............................................................................................ 13
1.4 OBJETIVOS DO TRABALHO ........................................................................................ 13
1.4.1 Objetivo geral .................................................................................................................. 13
1.4.2 Objetivos específicos ...................................................................................................... 13
1.5 ESTRUTURA DO TRABALHO ...................................................................................... 14
2 REDES ETHERNET ......................................................................................................... 15
2.1 GERENCIAMENTO DE REDES ..................................................................................... 17
2.2 MODELO DE GERENCIAMENTO ................................................................................ 19
2.3 ARQUITETURA SNMP ................................................................................................... 22
2.3.1 PONTOS POSITIVOS E NEGATIVOS DO SNMP ...................................................... 24
2.3.2 EXTENSÕES AO SNMP ............................................................................................... 25
2.3.3 MANAGEMENT INFORMATION BASE.................................................................... 26
2.3.4 FUNCIONAMENTO DO SNMP ................................................................................... 31
3 DESENVOLVIMENTO DO APLICATIVO .................................................................. 34
3.1 REQUISITOS .................................................................................................................... 34
3.2 ESPECIFICAÇÃO ............................................................................................................ 36
3.3 IMPLEMENTAÇÃO ........................................................................................................ 43
4 CONCLUSÃO .................................................................................................................... 49
4.1 EXTENSÕES .................................................................................................................... 50
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 51
ANEXO .................................................................................................................................... 53
11
1 INTRODUÇÃO
Atualmente é visível o desenvolvimento dos meios de comunicação, buscando sempre
melhores resultados e tecnologias. Este processo exige dos canais de comunicação a utilização
máxima de sua capacidade, sempre com novos serviços e aplicabilidades em áreas nunca
imaginadas. Com o surgimento da Internet, rede mundial de computadores, conseguiu-se
níveis de comunicações imensuráveis, com recursos e meios que tornam o cotidiano mais
simples e eficiente. A partir dessas tecnologias empregadas nas redes atuais surgem também
os problemas de transmissão.
O antigo conceito de “central de computadores” descrito como uma sala para onde os
usuários encaminhavam seus programas a fim de obter o processamento dos mesmos, ficou
ultrapassado. Este conceito foi substituído pelas redes de computadores, onde recursos podem
ser compartilhados facilmente. Empregadas em quase todos os locais, as redes de
computadores devem prover o acesso a informações e serviços de maneira eficaz e sem falhas
de comunicação. Por este motivo, o monitoramento e correção de falhas em redes ethernet
tornam-se tão importantes. É a partir deles que se pode solucionar problemas atuais e evitar
futuras deficiências nos sistemas.
As falhas que podem ocorrer num equipamento de rede, seja em um pequeno
escritório ou numa empresa de grande porte, devem ser identificadas o mais rápido possível a
fim de evitar grandes prejuízos. Para isso torna-se indispensável o uso de softwares que sejam
capazes de monitorar o estado dos equipamentos que compõe a rede. Esses softwares, como
HP OpenView e CiscoWorks, utilizam principalmente o protocolo SNMP (Simple Network
Management Protocol) para obter as informações dos seus objetos monitorados, os quais
estão modelados em bases de informações chamadas MIBs (Management Information Base).
12
1.1
JUSTIFICATIVA
Apesar do constante desenvolvimento de novas tecnologias de transmissão de dados,
todas elas dependem do correto funcionamento para justificar sua instalação. Uma rede de
dados que esteja utilizando como meio de transmissão cabos de categorias diversas, sistemas
ópticos ou mesmo sem fio não é uma rede confiável se não for corretamente monitorada e
gerenciada. Através do monitoramento das redes ethernet pode-se oferecer confiabilidade
para os serviços que trafegam por ela.
Monitorar uma rede significa acompanhar seu funcionamento identificando falhas,
buscando suas origens e evitando que as mesmas possam vir a se repetir no futuro. Significa
também a garantia de funcionamento de sistemas que dependam do meio de transmissão.
Todas essas necessidades citadas justificam a necessidade da criação de programas de
gerência capazes de auxiliar no cotidiano dos administradores de redes.
1.2
DEFINIÇÃO DO PROBLEMA
Uma rede, desde a parte física até a lógica, pode apresentar falhas que comprometerão
seu funcionamento. Para minimizar os impactos dessas falhas deve-se utilizar softwares de
monitoramento para acompanhar o estado da rede. Assim, para garantir os serviços para
qualquer fim que dependam de redes, deve-se acompanhar e verificar constantemente a
funcionalidade do sistema. Estas ferramentas de monitoramento utilizam em sua maioria o
protocolo SNMP (Simple Network Management Protocol) para obter as informações
desejadas, haja visto que a quase totalidade dos equipamentos de rede oferece suporte a este
protocolo.
13
1.3
QUESTÕES DE PESQUISA
Durante a elaboração deste trabalho, procurou-se responder às seguintes questões:
1.4
•
como é o funcionamento das redes ethernet;
•
como monitorar as falhas que podem ocorrer nas redes ethernet;
•
como é o funcionamento do protocolo SNMP;
•
quais as principais características das MIBs.
OBJETIVOS DO TRABALHO
Os objetivos deste trabalho estão divididos em objetivo geral e objetivos específicos.
1.4.1
Objetivo geral
Este trabalho tem como objetivo geral estudar e determinar procedimentos de
monitoramento e gerenciamento de falhas em redes ethernet.
1.4.2
Objetivos específicos
O objetivo específico deste trabalho é desenvolver um software de gerência de rede
usando o protocolo SNMP capaz de:
a) obter e tratar informações da rede e de seus elementos;
b) apresentar os alarmes gerados por recursos de rede;
c) identificar o estado das interfaces dos ativos de rede;
d) listar as principais informações dos elementos gerenciados.
14
1.5
ESTRUTURA DO TRABALHO
O trabalho está estruturado em quatro capítulos, sendo o primeiro a introdução que
compreende a justificativa, definição do problema, questões de pesquisa, objetivos do
trabalho e estrutura do trabalho. No segundo capítulo, explana-se a teoria de funcionamento
das redes ethernet e considerações de gerenciamento e arquitetura de redes relevantes para a
fundamentação deste TCC.
O desenvolvimento de um protótipo de software de
gerenciamento de rede utilizando como base o protocolo SNMP é descrito no terceiro
capítulo. E por fim, no quarto capítulo, faz-se a conclusão do presente estudo.
15
2 REDES ETHERNET
A evolução dos equipamentos de informática não foi algo que aconteceu rapidamente.
Os equipamentos foram ficando cada vez mais potentes e ao mesmo tempo tornando-se mais
indispensáveis para as empresas e instituições. Cada vez mais se utilizam computadores para
agilizar tarefas do dia a dia através de ferramentas sofisticadas. Para muitas empresas surgiu a
necessidade de que os computadores estivessem ligados de alguma forma aos demais
equipamentos existentes dentro da corporação, otimizando tempo e recursos através do
compartilhamento de impressoras e unidades de backup, não sendo privilégio de alguns, e
sim, estando disponível para todos os usuários (GOETEN, 2001).
Grande parte dos usuários de redes não entende porque precisam dela e, perguntam-se
porque não podem ter os equipamentos desejados em suas máquinas. A falta de treinamento
destes usuários da rede também pode levar ao uso inadequado da mesma, sobrecarregando-a e
conseqüentemente deixando-a mais lenta. Outro aspecto importante é que na maioria dos
casos, as redes não estão somente instaladas em ambientes de trabalho que têm a informática
como sua principal ferramenta (SZTAJNBERG, 1996).
Existem basicamente três tipos de redes de computadores, independentes da tecnologia
utilizada como meio de transmissão:
a) Redes Locais (Local Area Networks – LANs)
As LANs surgiram com o intuito principal de compartilhar recursos em um ambiente
com vários usuários. Um exemplo de utilização das mesmas seriam as empresas, onde vários
usuários, em diferentes estações de trabalho podem utilizar simultaneamente mesmos
programas, impressoras ou servidores. Cada estação de trabalho é independente e a função da
LAN é de integrar estas estações, promovendo uma concentração de recursos e informações,
reduzindo assim os custos para a empresa.
16
Uma rede local é aquela que possibilita a interconexão de equipamentos de
comunicação de dados numa pequena região. As LANs ainda caracterizam-se por não
utilizarem recursos de telecomunicações como meio de transmissão entre seus nós, que
correspondem às próprias estações dos usuários conectados (Goeten, 2001). Isto porque toda a
comunicação ocorre dentro da mesma área, onde os equipamentos estão interconectados
normalmente por concentradores, tornando a rede isenta do uso de recursos como provedores
de acesso à Internet ou serviços de operadoras telefônicas.
Entre as características básicas das LANs, segundo Tanembaum (2003), estão:
a) abrangência geográfica limitada (distâncias menores que 25 Km);
b) altas taxas de transmissão;
c) baixas taxas de erro;
d) possuem pequenos atrasos de transmissão;
e) geralmente são redes privadas;
f) facilidade de interconexão entre redes distintas.
b) Redes Metropolitanas (Metropolitan Area Networks – MANs):
Uma rede metropolitana possui características similares às LANs, mas difere-se por
cobrir uma área física maior que elas. Uma MAN pode cobrir praticamente uma cidade inteira
(TANEMBAUM, 2003).
Como a mais nova das três tecnologias de rede apresentadas, as MANs surgiram com o
objetivo de viabilizar o compartilhamento de recursos de hardware e software entre redes de
uma cidade (SOARES, 1995).
Este tipo de rede tinha uma pequena utilização até o cenário atual devido aos custos e
dificuldades da implantação da mesma. Atualmente com o surgimento de novas tecnologias,
como os sistemas WiMAX (Worldwide Interoperability for Microwave Access -
17
Interoperabilidade Mundial para Acesso de Micro-ondas), redes sem fio de alta capacidade e
ampla cobertura, a criação de redes MANs será mais constante.
c) Redes Geograficamente Distribuídas (Wide Area Networks – WANs)
As WANs são as pioneiras entre as redes de computadores. São constituídas de uma
diversidade de aplicações e usos, destacando-se as redes públicas, isto é, “o sistema de
comunicação é mantido, gerenciado e de propriedade de grandes operadoras (públicas ou
privadas) e seu acesso é público” (SOARES, 1995).
As redes de grande abrangência envolvem grandes distâncias geográficas e a
comunicação ocorre em velocidades mais baixas do que nas redes locais ou nas redes
metropolitanas de computadores (ALBUQUERQUE, 2001). A velocidade inferior, se
comparada as LANs ou MANS, ocorre devido ao compartilhamento em massa dos mesmos
recursos, sobrecarregando os equipamentos e meios de transmissão. Podem-se verificar ainda
os altos custos do serviço, que normalmente inviabilizam projetos de comunicações que
demandam alta capacidade de transmissão.
2.1
GERENCIAMENTO DE REDES
As redes prestam serviços fundamentais na maioria das organizações. As atividades de
algumas dessas organizações se tornam inviáveis se os serviços prestados pela rede não
estiverem disponíveis ou se forem prestados com tempos de resposta acima de determinados
limites. À medida que as redes locais crescem e se interligam com redes de outras
organizações, torna-se necessária a utilização de sistemas que facilitem sua gerência
(ALBUQUERQUE, 2001).
A gerência está associada ao controle de atividades e ao monitoramento do uso de
18
recursos da rede. As tarefas básicas de gerência em redes são: obter informações da rede,
tratar estas informações possibilitando um diagnóstico e encaminhar as soluções dos
problemas (SZTAJNBERG, 1996).
Além dos sistemas de gerenciamento é fundamental que o responsável por uma rede
tenha amplos conhecimentos de procedimentos, desempenho e identificação de falhas que
possam acontecer. Outra característica essencial ao administrador ou gerente de uma rede é a
familiarização com os sistemas por ele utilizados no cotidiano.
Os sistemas usados na gerência de redes procuram prestar os serviços sem
sobrecarregar as entidades gerenciadas ou canais de comunicação e de forma objetiva.
Segundo Tanembaum (2003), os componentes de um sistema de gerenciamento são:
a) dispositivos gerenciados: são dispositivos de hardware, como os computadores,
roteadores e serviços de terminais, que estão conectados à rede;
b) agentes: são programas que residem nos elementos da rede que devem ser
gerenciados. Eles coletam e armazenam diversas informações de gerenciamento;
c) base de informação de gerenciamento (Management Information Base – MIB):
é uma estrutura de dados que contém uma relação dos objetos gerenciáveis. Os
dados contidos nesta estrutura são obtidos pelos agentes e armazenados nesta
estrutura;
d) gerentes: são softwares que concentram os dados obtidos sobre os diversos
dispositivos da rede e os disponibilizam já interpretados para o gerente da rede;
e) protocolos de gerenciamento: através destes protocolos é possível estabelecer a
interação entre os programas gerentes e agentes;
f)
interfaces gráficas com o usuário (Graphical User Interface – GUI): nelas a
aplicação disponibiliza de forma amigável os dados e as informações para o
usuário.
19
2.2
MODELO DE GERENCIAMENTO
A gerência de uma rede envolve atividades agrupadas em cindo áreas funcionais
definidas pela ISO no modelo OSI FCAPS: de falhas, de configuração, de desempenho, de
contabilidade e de segurança. As atividades de cada área têm por objetivo controlar a rede,
otimizar a sua utilização e melhorar o desempenho dos serviços prestados aos usuários. A
maioria dos sistemas de gerência não abrange todas as áreas (ALBUQUERQUE, 2001). A
não abrangência de todas as áreas é justificável pela necessidade de objetividade na prática do
gerenciamento. Um sistema de gerência deve ser capaz de transmitir, de forma rápida e clara,
qualquer falha que possa ocorrer na rede. A apresentação de vários dados da rede
simultaneamente promove uma falta de concentração do gerente de rede. Por este motivo a
maioria dos softwares de gerência abrange apenas atividades específicas, como o
gerenciamento de falhas ou desempenho.
O modelo OSI de gerenciamento baseia-se no paradigma da orientação a objetos.
Através de entidades lógicas, também conhecidas como objetos gerenciados, é possível
representar estes recursos gerenciados. Ao desenvolver uma aplicação de gerenciamento, são
utilizados processos distribuídos, que são denominados de gerentes ou monitores,
responsáveis pelo gerenciamento, e agentes, responsáveis pela coleta, armazenamento e
disponibilização das informações (MAFINSKI, 1999).
Segundo Albuquerque (2001), a função de cada área funcional é:
a) gerência de falhas: envolve a identificação e a correção de falhas;
b) gerência de configuração: envolve a análise e a alteração das configurações
das entidades gerenciadas;
c) gerência de desempenho: envolve a coleta de dados sobre o desempenho das
entidades gerenciadas e a execução de ações visando a otimizá-lo;
20
d) gerência de contabilidade: envolve a imposição de cotas aos usuários, a
cobrança pelo uso dos recursos e a sua monitoração;
e) gerência de segurança: envolve o controle do acesso aos recursos, o sigilo, a
autenticação e a identificação de acessos não autorizados.
Os sistemas para gerência de redes podem auxiliar nas diversas fases citadas, coletando
dados e informações sobre eventos ocorridos, apresentando-os em um formato que facilite a
análise, sugerindo procedimentos a serem seguidos, seguindo automaticamente procedimentos
previamente definidos, possibilitando a inspeção e a alteração das configurações das entidades
gerenciadas através da comparação com configurações armazenadas em bases de dados e
possibilitando a modificação de cotas de acordo com as necessidades.
Independente das necessidades do responsável pela gerência da rede, o sistema de
gerenciamento segue um modelo básico. Este pode optar por realizar apenas as gerências
desejadas. No cotidiano a gerência mais utilizada é a de falhas, devido ao impacto que esta
tem sobre o funcionamento de uma rede de computadores. Uma empresa pode, por exemplo,
manter seu funcionamento com uma rede operando com certa lentidão, porém de maneira
alguma conseguirá realizar suas tarefas se a rede sofrer alguma falha e for indisponibilizada.
O modelo básico de gerenciamento é estruturado sobre os elementos de gerente,
agente, biblioteca de dados com informações dos agentes, denominada MIB (Management
Information Base) e protocolo de mensagens, como mostra a figura 1.
Figura 1: Arquitetura dos sistemas de gerência.
Fonte: Acervo do autor.
21
Nas estações de gerência são executados programas que possibilitam controle das
entidades gerenciadas, coleta e análise de dados. Além disso, são armazenadas em arquivos
ou banco de dados as informações sobre as entidades gerenciadas, as quais normalmente
podem ser apresentadas através de diagramas ou gráficos. Quando a atenção do gerente é
necessária, também podem ser gerados alertas sonoros e/ou visuais.
O agente é um programa, instalado e executado nas entidades gerenciadas, que recebe
solicitações da estação de gerência, executa as ações solicitadas e informa à estação sobre
eventos relevantes. Quando um agente recebe uma solicitação, executa a ação após verificar
se a solicitação está correta e se há autorização. Os serviços solicitados resultam na leitura ou
na alteração de dados na entidade gerenciada.
Para que haja comunicação através da rede, além do agente, devem ser instalados
protocolos nas entidades gerenciadas. O mais comum é o protocolo TCP/IP, que pode ser
usado também por outras aplicações na entidade. O código que os implementa normalmente
coleta informações usadas na gerência da rede, como por exemplo, estatísticas associadas a
cada protocolo.
Um sistema para gerência de redes pode ter uma arquitetura centralizada ou
distribuída. Na arquitetura centralizada é usada apenas uma estação de gerência. Os agentes
recebem mensagens dessa estação e executam as ações solicitadas. Essa arquitetura é
adequada para redes de pequeno porte. Na arquitetura distribuída são usadas várias máquinas,
organizadas em uma hierarquia, para gerenciar a rede. As máquinas no topo da hierarquia
operam como estações de gerência, apresentando uma visão integrada da rede, e interagem
com as outras máquinas na hierarquia. Independente da arquitetura adotada, as informações
coletadas são geralmente enviadas para um centro de gerência da rede (Network Management
Center) no qual essas informações são processadas e decisões são tomadas pelos técnicos
responsáveis pela gerência da rede (ALBUQUERQUE, 2001).
22
2.3
ARQUITETURA SNMP
O SNMP foi desenvolvido nos anos 80 como resposta para os problemas de
gerenciamento em redes TCP/IP, envolvendo redes heterogêneas, ou seja, onde não existem
apenas equipamentos de um fabricante. Inicialmente foi concebido para ser apenas uma
solução provisória até o desenvolvimento de um protocolo de gerenciamento mais completo,
o CMIP (Common Management Information Protocol). Neste contexto, sem um protocolo
melhor disponível, o SNMP passou a ser o protocolo mais utilizado (MELLO, 2000).
Outro motivo que levou a permanência do protocolo SNMP foi a compatibilidade de
gerenciamento necessária nas redes de computadores. Como o desenvolvimento do CMIP
ocorreu de forma lenta, as grandes empresas começaram a utilizar o protocolo SNMP, já
desenvolvido, para gerenciar seus equipamentos. Até que o novo protocolo fosse finalizado,
milhares de equipamentos já estavam operando baseados no SNMP, o que exigia a
compatibilidade dos novos equipamentos com estes.
Este protocolo, que opera na camada de aplicação, como mostra a Figura 2, pode ser
facilmente implementado e consome poucos recursos das máquinas e dos canais de
comunicação. O código necessário à sua implementação pode ser desenvolvido para
dispositivos com capacidades mínimas de processamento e armazenamento, e a sobrecarga
decorrente do uso do SNMP na rede e nas entidades é pequena (ALBUQUERQUE, 2001).
23
Figura 2 – Protocolo de gerenciamento SNMP.
Fonte: MELLO (2000)
Atualmente existem três versões de SNMP: o SNMPv1, o SNMPv2 e o SNMPv3. O
SNMPv3, implementa as questões de segurança não encontradas nas primeiras versões do
SNMP, além de adicionar novas funcionalidades, onde destacam-se a capacidade de
gerenciamento distribuído, via primitivas de comunicação gerente-gerente, e as formas de
tratamento e transporte de dados (GOETEN, 2001).
Apesar do desenvolvimento da terceira versão do SNMP, SNMPv3, ter ocorrido há
mais de dez anos, este continua em desuso. Isto vem ocorrendo pela complexidade de
implementação dessa versão, causada principalmente pelas exigências físicas do equipamento
a ser gerenciado. Este deve possuir recursos muito mais elevados de processamento para o
correto funcionamento da versão do protocolo. Como uma das principais características do
SNMP é a flexibilidade e baixo consumo de recursos, a terceira geração do protocolo acaba
inviabilizando a implementação do gerenciamento em equipamentos mais simples. No cenário
atual existem apenas algumas fabricantes de equipamentos que estão utilizando esta versão
em seus equipamentos, que possuem seu custo muito maior do que outros que trazem apenas
versões anteriores do SNMP.
Na arquitetura SNMP, a maior parte do processamento ocorre nas estações de gerência
24
e não nas entidades gerenciadas. Essa arquitetura é composta por agentes, estações de
gerência, bases de dados com informações necessárias à gerência e protocolo para a
comunicação entre agentes e estações. O protocolo define as estruturas das mensagens e a
seqüência em que devem ser trocadas informações entre agentes e estações de gerência. São
definidas mensagens para a leitura de informações dos agentes, a escrita de informações nos
agentes e a monitoração de eventos notificados pelos agentes. Os formatos destas mensagens
foram estabelecidos através de uma linguagem formal chamada Abstract Syntax Notation One
(ASN.1) (ALBUQUERQUE, 2001).
O banco de dados que modela o agente SNMP é denominado Management
Information Base (MIB) e sua função básica é estabelecer quais valores podem ser
gerenciados no dispositivo. O SNMP permite a extensão destes valores padrões
adicionalmente com valores específicos para um agente particular pelo uso de MIB privados.
Diretivas emitidas pelo gerenciador da rede a um agente SNMP consistem nos identificadores
de variáveis de SNMP (chamados identificadores da MIB ou variáveis da MIB) junto com
instruções para adquirir o valor do identificador ou fixar o identificador para um novo valor
(MELLO, 2000).
2.3.1
PONTOS POSITIVOS E NEGATIVOS DO SNMP
O SNMP tem vários pontos positivos. Um deles é sua popularidade para a gerência de
redes TCP/IP. Agentes SNMP estão disponíveis para vários dispositivos de rede, desde
computadores até bridges, modems ou impressoras (STALLINGS, 1999).
Adicionalmente, o SNMP é um protocolo de gerenciamento flexível e extensível.
Pode-se estender os agentes SNMP para cobrir dados específicos de dispositivos, pelo uso de
arquivos ASN.1. O SNMP pode assumir numerosos trabalhos específicos para classes de
25
dispositivos fornecendo um mecanismo padrão de controle de rede e monitoramento
(MELLO, 2000).
Quanto aos pontos negativos do SNMP, estes podem ser descritos principalmente pela
utilização de grandes pacotes para pequenas informações e falhas de segurança. A utilização
de pacotes de tamanho excessivo ocorre principalmente pela forma como são identificados os
objetos de gerenciamento. Estes objetos recebem nomenclaturas em forma de uma seqüência
de bit, onde cada bit representa uma especificação da MIB. Dessa forma existe um tráfego
desnecessário de informações na rede.
Outra deficiência do SNMP padrão está nas brechas de segurança que podem permitir
o acesso de intrusos às informações transportadas pela rede. Esses intrusos podem, portanto,
acessando estas informações, retirar algumas máquinas da rede. A solução para este problema,
no entanto, é simples: a expansão do SNMP, a versão SNMPv3, adiciona mecanismos de
segurança que auxiliam no combate dos três maiores problemas de segurança: a privacidade
dos dados (previne que intrusos tenham acesso às informações de gerenciamento
transportadas pela rede), autenticação (previne que intrusos enviem dados falsos através da
rede) e controle de acesso (restringe o acesso a determinadas variáveis para certos usuários,
reduzindo a possibilidade de um usuário, acidentalmente, danificar a rede) (GOETEN, 2001).
O protocolo SNMP está longe da perfeição, contudo, devido a sua flexibilidade, os
principais problemas relatados podem ser contornados e por isto é utilizado desde a década de
80 pelas grandes ou pequenas empresas fabricantes de equipamentos.
2.3.2
EXTENSÕES AO SNMP
Com sua facilidade de implementação, livrando os desenvolvedores das dificuldades
de compatibilidade do modelo OSI, o protocolo SNMP progrediu rapidamente, tornando-se
26
cada vez mais atraente para o gerenciamento de redes TCP/IP. Com isso, o SNMP ganhou um
número de implementações por parte de diversos fabricantes, tornando-se o protocolo mais
difundido para o gerenciamento de redes (GOETEN, 2001). Apesar de sua criação na década
de 80 e poucas mudanças que ocorreram posteriormente, este protocolo continua atual e supre
as necessidades nas práticas de gerenciamento.
Com a grande popularidade do SNMP, várias extensões têm sido propostas. Talvez a
mais importante das iniciativas seja o desenvolvimento da capacidade de monitoramento
remoto ao SNMP. A especificação Remote Monitoring (RMON) defini capacidades adicionais
à MIB convencional do SNMP, além de funções que exploram a MIB RMON. O RMON
possibilita ao gerente da rede monitorar as subredes como um todo único. Fornecedores e
usuários vêem no RMON uma extensão essencial ao SNMP. O RMON já está sendo
amplamente explorado, possuindo várias implementações (REKOWSKY, 1999).
Além da RMON, várias outras extensões à MIB do SNMP têm sido desenvolvidas.
Algumas dessas extensões buscam compatibilizar o SNMP com outras padronizações, como
Token Ring e FDDI. Outras extensões são específicas de determinados fornecedores e
fabricantes.
2.3.3
MANAGEMENT INFORMATION BASE
A MIB é o conjunto dos objetos gerenciados que traz todas as informações necessárias
para o gerenciamento. Ela contém uma lista de variáveis, denominadas de objetos, e seus
respectivos atributos. O principal requisito para o correto funcionamento do gerenciamento é
a estrutura da MIB contemplar os recursos disponíveis do equipamento gerenciado e estes
recursos poderem ser lidos pelo gerente de rede. Por este motivo surgiu a necessidade de
padronizar uma lista de objetos, que deu origem a MIB.
27
Historicamente a MIB foi desenvolvida em duas etapas. A primeira delas foi
apresentada pela RFC (Request for Comments) 1156 trazendo a MIB primeira versão. Logo
após foram contempladas algumas melhorias na estrutura desta MIB que deram origem a
MIB-2, através da RFC 1213, utilizada atualmente.
O protocolo SNMP utiliza uma MIB padrão, que é conhecida como Structure of
Management Information (SMI). Nessa estrutura, somente cinco tipos de dados são
permitidos: integer, bit string, octet string, null e object identifier. A partir destes tipos
primitivos citados acima, podem ser construídos objetos mais complexos. A variável Object
Identifier oferece uma forma de identificar objetos. O mecanismo utilizado é definir uma
árvore de padrões e colocar todos os objetos de cada padrão em um único local na árvore. Na
figura 3 pode-se ver parte da árvore que inclui a MIB do SNMP (SCHULZ, 2004).
Figura 3 – SMI: MIB padrão SNMP.
Fonte: Schulz (2004)
Segundo Schulz (2004), o nó raiz da árvore não possui rótulo, mas possui pelo menos
três sub níveis, sendo eles: o nó 0 que é administrado pela Consultative Committe for
28
International Telegraph and Thelephone (CCITT), o nó 1 que é administrado pela ISO e o nó
2 que é administrado em conjunto pela CCITT e pela ISO. Sob o nó ISO fica o nó que pode
ser utilizado por outras instituições: o org (3). Abaixo dele fica o DOD (6) que pertence ao
Departamento de Defesa dos EUA. O DOD definiu seis árvores, na qual um sub-nó para a
comunidade Internet, que é administrado pela International Activities Board (IAB). Abaixo
desse nó tem-se:
• directory (1): mantém informações sobre o X.500, serviço de diretórios da ISO;
• mgmt (2): contém as informações de gerenciamento. É nesta árvore que fica o nó da
MIB-2 da internet;
• experimental (3): contém projetos experimentais da IAB;
• private (4): contém objetos definidos por organizações privadas;
• security (5): objetos definidos especificamente para assuntos de segurança;
• SNMPv2 (6): objetos definidos especificamente para o SNMPv2.
A análise da estrutura acima revela a origem do Object Identifier. Todos os nós
possuem além do nome um número particular. Este número é utilizado em seqüências para
identificar os objetos de interesse. Dessa forma, os objetos da MIB SMI são sempre
identificados com o prefixo 1.3.6.1.2.1, que resulta da seqüência iso, org, dod, internet, mgmt,
mib-2. Após este prefixo surgem as categorias, que identificam os objetos de cada
equipamento gerenciado. Estas categorias estão listadas no quadro 1.
29
Quadro 1 – Objetos da MIB-2.
Fonte: Schulz (2004).
O grupo System da MIB-2 contém informações como nome do dispositivo, tipo de
equipamento, fabricante, modelo, data de última inicialização. A grupo Interface trata dos
adaptadores de rede, controlando o número de pacotes e bytes enviados e recebidos da rede,
descartes, difusões e tamanho da fila. O grupo Addr-Translation fornece informações sobre o
mapeamento de endereços. O grupo IP trata de todo o tráfego IP recebido e transmitido pelo
equipamento. São especialmente importantes para o gerenciamento de roteadores. O grupo
ICMP se refere a mensagens de erro ICMP registrando quantas mensagens de erro foram
encontradas. O grupo TCP monitora conexões abertas, segmentos enviados e recebidos e
erros. O grupo UDP registra o número de datagramas UDP enviados e recebidos e estatísticas
de erros. O grupo EGP é usado para controlar roteadores compatíveis com este protocolo. O
grupo Transmission é um marcador de lugar para MIBs de meios físicos externos. Por
exemplo, é possível manter estatísticas especificamente relacionadas a Ethernet. O grupo
30
SNMP se destina ao cálculo de estatísticas sobre a operação do próprio SNMP (SCHULZ,
2004).
A definição dos objetos (variáveis) numa MIB do SNMP padrão, segundo Goeten
(2001), contém os seguintes tipos de dados:
a)
INTEGER, OCTET, STRING, NULL, OBJECT IDENTIFIER, SET e
SEQUENCE – são tipos universais, de uso geral;
b)
IpAddress – um endereço de 32 bits utilizando o formato IP;
c)
Counter32 – um inteiro positivo que pode ser incrementado, mas nunca
decrementado. Seu valor máximo é 232 – 1(4.294.967.295). Quando atingir
seu valor máximo é reiniciado em zero;
d)
Gauge32 – um inteiro positivo que pode ser incrementado e decrementado.
Seu valor máximo é o mesmo do Counter32. Quando este valor máximo é
alcançado ele não é reiniciado, pois pode ser decrementado;
e)
TimeTicks – este inteiro positivo conta, em milésimos de segundos, um
determinado período;
f)
Opaque – este tipo permite suportar dados arbitrários. O dado é codificado
como um OCTET STRING para transmissão.
Os objetos apresentados na MIB são classificados basicamente em três grupos: readonly (apenas leitura), write-only (apenas escrita), read-write (leitura e escrita). Esta
classificação é baseada na forma como o objeto pode ser acessado ou alterado. Um objeto
read-only pode apenas ser lido, sem direito a alteração. Objetos com direito a escrita podem
ter seus valores alterados por meio de comandos SET. Para permitir qualquer tipo de acesso
aos objetos foram atribuídas duas classes de senhas. Estas senhas permitem o acesso de leitura
ou acesso de escrita nos valores da MIB, também são chamadas de communities
(comunidades). Através destas senhas é possível restringir a interação do gerente com os
31
objetos gerenciados. Normalmente os acessos de leitura são liberados para que os usuários e
gerentes com pouca experiência possam consultar informações sobre o equipamento. O
acesso de escrita nos valores deve ser controlado pelos gerentes de nível superior, pois estes
permitem alteração nas configurações de equipamentos e objetos.
2.3.4
FUNCIONAMENTO DO SNMP
O protocolo SNMP foi desenvolvido para rodar sobre a camada de transporte, na
camada de aplicação da pilha de protocolo TCP/IP. A maioria das implementações do SNMP
utilizam o User Datagram Protocol (UDP) como protocolo de transporte. O UDP é um
protocolo não-confiável, não garantindo a entrega, a ordem ou a proteção contra duplicação
das mensagens (GOETEN, 2001).
O SNMP utiliza o UDP, pois foi desenvolvido para funcionar sobre um serviço de
transporte sem conexão (MELLO, 2000). Foi adotada a utilização do UDP principalmente
para não comprometer o desempenho da rede por onde trafegam as informações de
gerenciamento. Como é exigido do serviço de gerenciamento, que este seja o mais rápido
possível e sem comprometer desempenho, não seria eficiente utilizar um protocolo que
dependesse de um serviço orientado a conexão ou que necessitasse de confirmações a cada
mensagem. Estas confirmações gerariam um tráfego desnecessário na rede, comprometendo
seu desempenho.
Como o UDP é um protocolo não-confiável, é possível que mensagens SNMP sejam
perdidas. O SNMP por si só não fornece garantia sobre a entrega das mensagens. As ações a
serem tomadas quando da perda de uma mensagem SNMP não são abordadas pelo padrão
(MELLO, 2000). No entanto, cada software de gerência aborda esta questão de maneira
distinta. Existem casos onde o software ao fazer uma operação de requisição de valores e não
32
consegue obter o valor, utiliza a falha para determinar a indisponibilidade do equipamento e
alertar o gerente. Outra ação tomada é repetir a requisição até que a mesma obtenha o
resultado desejado.
O SNMP utiliza cinco comandos básicos para suas operações. O comando Get-Request
solicita que os nomes das variáveis requeridos sejam explicitamente informados ao gerente. O
comando Get-Next-Request solicita a variável seguinte, permitindo que um gerente percorra a
MIB inteira alfabeticamente. O comando Get-Bulk-Request serve para a transferência de
grandes quantidades de informação, como por exemplo uma tabela de dados. A mensagem
Set-request permite atualizar o valor de uma variável, mudando o estado desta, desde que a
especificação do objeto permita essas atualizações. A mensagem Inform-request tem a
utilidade de informar a um gerente quais as variáveis ele está gerenciando. O comando Trap é
uma mensagem enviada de um agente para um gerente quando acionada.
A Figura 4 ilustra o contexto do protocolo SNMP na pilha de protocolo TCP/IP,
utilizando o UDP como protocolo de transporte.
Figura 4 – Protocolo SNMP sobre a camada de transporte.
Fonte: Mello (2000).
33
As operações de requisição do SNMP como Get, GetNext, GetBulk, Inform e Set
utilizam a porta 161, já operação Trap tem reservada para si a porta 162. Isto ocorre para que
o tráfego seja separado e as informações possam ser transmitidas ou requeridas de forma mais
segura.
A formação das mensagens SNMP é feita, diferente da maioria dos protocolos, de
forma inversa. Primeiramente é formado o pacote com as informações desejadas. Este pacote
recebe então os indicadores de erros e requisições. Por fim o pacote formado recebe o
cabeçalho de versão e comunidade. Tanto a versão como a comunidade devem ser as mesmas
entre o gerente e o elemento gerenciado para que o pacote seja aceito e não descartado.
Figura 5 – Formato das mensagens SNMP.
Fonte: SCHULZ (2004)
34
3 DESENVOLVIMENTO DO APLICATIVO
Neste capítulo são apresentados em síntese o modelo e a especificação do software
proposto neste trabalho.
3.1
REQUISITOS
Com a unificação cada vez mais forte nos serviços de comunicação das empresas em
locais específicos (datacenters), centralizando a gerência das redes e equipamentos em um só
lugar, existe a necessidade do uso de ferramentas que auxiliem no monitoramento dos ativos
de rede espalhados pelas várias áreas, cidades ou países que compõe a estrutura empresarial.
Sendo assim, os softwares devem englobar funcionalidades que ajudem aos gerentes de rede a
monitorar em tempo real as condições de seus equipamentos. Entre essas funcionalidades
podem-se citar os alertas gerados ao sinal de alguma anormalidade, testes de conectividade,
monitoramento de interfaces, localização de ativos, entre outros.
Para atender a todas essas necessidades um dos melhores protocolos de gerenciamento
é o SNMP, visto que sua globalidade e generalidade auxiliam na comunicação das
ferramentas de gerenciamento com os mais diversos tipos de equipamentos e marcas. As
funcionalidades desejadas para este protótipo são:
a) verificação de conectividade com os equipamentos;
b) monitoramento de interfaces variadas;
c) gerenciamento dos alertas e alarmes gerados pelos equipamentos;
d) informações sobre os equipamentos monitorados.
O desenvolvimento do projeto foi baseado principalmente na plataforma de
equipamentos da marca Cisco, porém isso não impede seu funcionamento com apenas alguns
35
ajustes para outras marcas de roteadores, switches, access points, entre outros. Esta
flexibilidade no funcionamento da ferramenta foi conseguido adotando apenas os objetos
padrão da MIB-2.
Para obtenção dos valores através do protocolo SNMP foi utilizado o SNMPWALK,
um programa já desenvolvido e largamente utilizado no ambiente de gerência. Este programa
faz a requisição dos dados através do SNMP por varredura, ou seja, para cada solicitação ele
faz a varredura de todos os componentes e objetos contidos nas mais diversas MIBs dos
equipamentos. Para fazer a requisição do próximo objeto ele utiliza a operação GetNext já
citada anteriormente. Existe a possibilidade de filtrar apenas objetos desejados com a inclusão
do Identificador de Objeto após o comando de walk. Todos os valores obtidos são salvos em
arquivos de texto para que possam ser lidos e trabalhados da melhor forma.
A figura 6 apresenta um exemplo de obtenção dos valores a partir do SNMPWALK
de forma genérica, ou seja, até que o comando GetNext finalize a consulta de todos os
identificadores, o comando continua pesquisando o próximo valor. Quando utilizado nas
operações do software, o SNMPWALK é solicitado pela seguinte sintaxe: snmpwalk [IP]
[SNMP COMMUNITY] [OBJECT IDENTIFIER] > [FILE]. A função de cada campo é a
seguinte:
a) [IP]: endereço IP do equipamento;
b) [SNMP COMMUNITY]: comunidade SNMP de leitura para o equipamento;
c) [OBJECT IDENTIFIER]: identificador do objeto desejado, por exemplo o uptime:
.1.3.6.1.2.1.1.3.0. Se desejar uma varredura de todos os valores basta omitir este
campo.
d) [FILE]: arquivo que receberá todos os valores obtidos pelo SNMPWALK.
36
Figura 6 – Exemplo de aquisição de valores pelo SNMPWALK.
3.2
ESPECIFICAÇÃO
As principais funcionalidades do protótipo utilizam como protocolo o SNMP, que
permite a obtenção das informações necessárias trocadas entre o Gerente (máquina que roda o
software) e os Agentes, que serão considerados os equipamentos monitorados pelo Gerente.
O software está dividido em 4 módulos. São eles:
a)
módulo principal – contém os equipamentos cadastrados e gerencia o acesso
aos mesmos;
b)
módulo de informações – traz as principais informações de cada
equipamento cadastrado no gerente;
c)
módulo de monitoramento de interfaces – permite o monitoramento das
37
interfaces selecionadas, informando seu estado atual;
d)
módulo de syslog - recebe os alertas de modificação de equipamentos que
suportam este serviço.
O funcionamento do software é apresentado a seguir através de fluxogramas. A figura
7 mostra os processos contidos no Módulo Principal da ferramenta desenvolvida neste
projeto, cuja interface está apresentada na figura 16. Neste processo é criada a interface
principal do programa, que apresenta os equipamentos gerenciados e também os botões de
acesso às funções do software.
Figura 7 – Fluxograma do Módulo Principal.
Na figura 8 é demonstrado o funcionamento da função INCLUIR, que inclui os
equipamentos na lista de monitoramento.
38
Figura 8 – Fluxograma da função Incluir.
O funcionamento da função EXCLUIR, que exclui os equipamentos da lista de
monitoramento, é apresentado na figura 9.
Figura 9 – Fluxograma da função Excluir.
39
O próximo fluxograma, apresentado na figura 10, representa o funcionamento da
função STATUS. Esta função permite verificar a conectividade com todos os equipamentos
contidos na lista de monitoramento.
Figura 10 – Fluxograma da função Status.
A função de Informações tem seu funcionamento demonstrado pela figura 11. Esta
função obtém os dados principais do elemento selecionado, são eles: Equipamento, Software,
Host, Uptime, Contato e Local.
Figura 11 – Fluxograma da função Informações.
40
A próxima figura, de número 12, demonstra a funcionalidade de Syslog, que recebe
informações diretamente dos equipamentos que tem suporte a essa função.
Figura 12 – Fluxograma da função Syslog.
O funcionamento da função de Interfaces é mostrado pela figura 13. Esta função
apresenta as interfaces possíveis de monitoramento do equipamento e permitem as incluir no
serviço de estado em tempo real. A seguir é apresentada também a função Incluir, na figura
14.
Figura 13 – Fluxograma da função Interfaces.
41
Figura 14 – Fluxograma da função Incluir da função Interfaces.
O monitoramento de interfaces é demonstrado pelo fluxograma da figura 15. Esta
função permite verificar o estado da interface em intervalos de tempo definidos na
configuração do programa.
Figura 15 – Fluxograma da função Status de Interfaces.
As configurações principais do programa são definidas na função de Configurações.
Esta função tem seu funcionamento explicado na figura 16.
42
Figura 16 – Fluxograma da função Configurações.
43
3.3
IMPLEMENTAÇÃO
O módulo principal, mostrado na figura 17, é também a interface principal para o
usuário. Nele estão contidos os equipamentos monitorados, um teste de conectividade para
estes equipamentos e os botões de acesso aos outros módulos.
Figura 17 – Módulo principal do software.
A interface principal traz os endereços dos equipamentos cadastrados, seus locais de
instalação e também o status fornecido pelo botão “Status”. O status é verificado através de
um comando de ping (envio de pacote ICMP) para cada um dos equipamentos. Caso o
resultado do ping seja positivo o equipamento assume o status de “OK”; se o resultado for um
erro, o equipamento que retornou o erro recebe a condição de “FALHA!!!”, que determina
uma falha de conectividade entre a estação gerente e o elemento monitorado. A inclusão de
44
novos equipamentos nessa interface é feita através do botão “Incluir”, que solicita em duas
telas distintas as informações de endereço IP e local de instalção como mostra a figura 18.
Figura 18 – Interfaces para inclusão de equipamentos.
Após solicitados os dados, estes são inclusos em um arquivo que contém todos os
equipamentos cadastrados até então. Uma das primeiras configurações necessárias para o
correto funcionamento do programa é realizada através do botão “Configurações”. Este abre
uma interface que solicita a comunidade SNMP padrão para os elementos cadastrados, o
tempo de polling, ou atualização do status, para as interfaces monitoradas, que deve ser
informado em minutos, e também o endereço de IP da máquina que está executando o
programa, para que possa ser aberta a porta de comunicação utilizada para receber os alertas
do Syslog.
Outro botão constante nesta interface é o “Excluir” que faz a limpeza do elemento
selecionado da base de dados limpando seu registro no arquivo de equipamentos. Em todos os
módulos onde é solicitada a comunidade SNMP para obtenção dos valores, é verificado
inicialmente se o equipamento está ativo e se a comunidade configurada no programa é a
mesma que dá acesso aos equipamentos.
O módulo de informações, mostrado na figura 19, acionado através do botão
“Informações”, traz as informações mais importantes de cada equipamento selecionado. Este
módulo utiliza o protocolo SNMP para obtenção dos valores desejados. Nele estão presentes
as informações de modelo de equipamento, versão do firmware instalado, hostname (nome do
host), tempo de funcionamento (uptime), informação de contato e local de instalação. As
45
últimas quatro informações citadas anteriormente devem estar devidamente configuradas nos
equipamentos a fim de que a leitura dos valores tenha sucesso. Todas as informações
solicitadas ao equipamento pelo protocolo SNMP estão contidos na MIB genérica do mesmo.
Isto possibilita a utilização do protótipo para gerenciamento de várias marcas e modelos de
ativos. Os objetos solicitados são:
a) modelo do equipamento: .1.3.6.1.2.1.1.1.0 (sysDescr);
b) versão do firmware: .1.3.6.1.2.1.1.1.0 (sysDescr);
c) hostname: .1.3.6.1.2.1.1.5.0 (sysName);
d) tempo em atividade: .1.3.6.1.2.1.1.3.0 (sysUpTimeInstance);
e) contato de suporte: .1.3.6.1.2.1.1.4.0 (sysContact);
f) local de instalação: .1.3.6.1.2.1.1.6.0 (sysLocation).
Figura 19 – Interface de informações.
O módulo de monitoramento de interfaces é considerado como mais importante e útil
nesse software. Após selecionado o equipamento desejado e acionado o botão “Interfaces” no
módulo principal, o software faz uma varredura no objeto que descreve todas as interfaces
constantes no equipamento. Esse processo é executado buscando o objeto .1.3.6.1.2.1.2.2.1.2
(ifDescr). Quando obtido o resultado, obtém-se além da descrição de todas as interfaces, as
instâncias a serem monitoras. São essas instâncias, que aparecem ao final da OID requisitada
que descrevem a identificação da interface de maneira numérica. Esta identificação é utilizada
futuramente para decidir qual valor é ou não relevante para o monitoramento. Após obtidas
todas as interfaces (instâncias e descrições) é gerado um arquivo e espelhado o mesmo para
46
uma lista de interfaces com possibilidade de monitoramento. Ao lado desta lista é gerada uma
lista vazia que deverá conter as interfaces a serem monitoradas. A inclusão das interfaces no
monitoramento é feita selecionando-se o objeto e acionando o botão “Incluir =>”, como
mostra a figura 20, que copia a interface desejada para a lista de monitoramento.
Figura 20 – Módulo de seleção de interfaces.
Após a seleção das interfaces desejadas, deve ser acionado o botão “STATUS” que
fechará a interface atual e iniciará uma interface, figura 21, que faz o monitoramento
constante das interfaces selecionadas. O estado das interfaces é verificado através do objeto
ifOperStatus (1.3.6.1.2.1.2.2.1.8). O valor obtido desse objeto pode ter o valor 1 (um) para
interfaces operantes ou 2 (dois) para desconectadas. O intervalo de atualização do estado das
interfaces é definido pelo valor de polling configurado em “Configurações” da interface
principal do programa. Esse valor deve ser informado em forma de minutos. Quando o
período de polling é superado ocorre a renovação da leitura das interfaces, informando se
houve ou não alteração de estado. Para encerrar o monitoramento, deve ser pressionada a tecla
F10.
47
Figura 21 – Módulo de monitoramento de interfaces.
O último módulo do protótipo, o Syslog, serve apenas como registro e informação das
atividades dos equipamentos cadastrados. Nem todos os equipamentos têm suporte a esta
funcionalidade, porém é uma boa opção para equipamentos que não possuem envio de
mensagens de alerta (Traps) via SNMP. Esse módulo utiliza uma conexão de porta UDP
aberta para recepção de informativos em forma de texto. Este módulo depende da
configuração do endereço IP da estação local no módulo de “Configuração”. Fica restrito o
funcionamento ainda a computadores que não possuem bloqueio na porta 514, como por
exemplo um Firewall. Este módulo registra em uma caixa de texto com barra de rolagem
todos os alertas que os equipamentos ativos enviam. É indispensável também a configuração
dos equipamentos para envio de mensagens de Syslog para o endereço IP da estação local.
Um exemplo do funcionamento do módulo é demonstrado na figura 22.
Figura 22 – Módulo de Syslog.
48
Um dos grandes benefícios dos informes através do syslog é a possibilidade de registro
de todos os eventos monitorados pelos equipamentos. Estes registros podem auxiliar na
detecção de algum problema iminente ou registrar algo que ocorreu fora dos olhares do
gerente de rede. A figura 23 demonstra a interface do protótipo totalmente operacional.
Figura 23 – Interface completa do protótipo.
49
4 CONCLUSÃO
Para que uma rede opere em total funcionalidade existe a necessidade do
monitoramento constante do ambiente, a fim de identificar falhas ou possíveis falhas dos
sistemas. O trabalho de gerenciamento desse ambiente torna-se cada vez mais oneroso tanto
para a empresa quanto para os funcionários responsáveis pelo trabalho. Dessa forma, com as
ferramentas de gerenciamento pode-se otimizar o desempenho dos funcionários e evitar
possíveis falhas que venham a prejudicar o andamento dos mais diversos processos
coorporativos.
A utilização da ferramenta SNMPWALK, foi essencial para o desenvolvimento do
software em virtude da falta de conhecimentos avançados na área de programação deste
acadêmico. Por este motivo também, a linguagem de programação adotada foi a proprietária
da ferramenta AutoIT, da AutoITScript.com. Esta linguagem de programação largamente
utilizada em scripts para automação de tarefas tem uma linguagem mais simples para os
leigos, não sendo capaz de realizar tarefas mais elaboradas na área da programação.
Uma simples ferramenta como a desenvolvida neste trabalho de conclusão de curso
pode auxiliar o cotidiano dos gerentes de rede informando-os das modificações de estado de
algum equipamento que já esteja apresentando alguma falha ou que possa estar com o
funcionamento duvidoso.
Em relação a utilização do protocolo SNMP no gerenciamento dos equipamentos a
conclusão é extremamente positiva, uma vez que este protocolo tem um baixo consumo dos
recursos de rede, fornece a mais variada gama de informações relativa aos equipamentos e
tem uma fácil implementação se comparada com os outros protocolos. A estrutura das MIBs é
organizada e de acesso simples, facilitando o entendimento e leitura dos valores desejados. A
implementação de uma MIB padrão que atende a totalidade dos equipamentos auxilia muito
50
na obtenção de informações comuns e de extrema importância para o gerenciamento de redes.
A flexibilidade e recursos do SNMP permitem a criação de ferramentas completas de
gerenciamento que atendem as necessidades principais nesta prática, seja no gerenciamento
de falhas, configuração, desempenho, contabilidade ou segurança.
4.1
EXTENSÕES
Este trabalho pode ser incrementado com o desenvolvimento de uma versão
aprimorada do software, utilizando uma linguagem de programação avançada e
desenvolvendo um ambiente unificado que contemple todos os módulos necessários para o
funcionamento da ferramenta. Com uma linguagem de programação mais avançada será
possível manter o serviço de monitoramento de todos os equipamentos simultaneamente,
evitando a intervenção constante do operador do programa.
Uma boa sugestão é desenvolver um módulo receptor de Traps, ao invés da
implementação do Syslog. Esse módulo facilitaria o monitoramento dos alarmes para os
gerentes de rede, tornando ainda mais precisa e útil a ferramenta.
É válido também a implementação do software utilizando a terceira geração do
protocolo SNMP, o v3, que incorpora funções de autenticação e aplicação mais avançadas. É
importante ressaltar que esta versão do protocolo foi implementada em poucos equipamentos
e de custo elevado, o que dificulta os testes com o protocolo.
51
REFERÊNCIAS BIBLIOGRÁFICAS
ALBUQUERQUE, Fernando. TCP-IP Internet: protocolos & tecnologias. 3. ed. Rio de
Janeiro : Axcel Books do Brasil, 2001. xv, 362 p, il.
BRISA, Sociedade Brasileira para Interconexão de Sistemas Abertos. Arquitetura de redes
de computadores OSI e TCP/IP. São Paulo: Makron Books; Rio de Janeiro, 1994.
COMER, Douglas; STEVENS, David L. Internetworking with TCP-IP. 3rd ed. Englewood
Cliffs, NJ : Prentice Hall, c1995. 3v, il.
GOETEN, Luciano Waltrick; STRINGARI, Sergio; UNIVERSIDADE REGIONAL DE
BLUMENAU, Centro de Ciências Exatas e Naturais. Protótipo de um software agente
SNMP para rede Windows. , 2001. 73p, il. Orientador: Sérgio Stringari.
MAFINSKI, Andre; STRINGARI, Sergio; UNIVERSIDADE REGIONAL DE
BLUMENAU, Centro de Ciencias Exatas e Naturais. Prototipo de software de gerencia
SNMP para o ambiente Windows NT. , 1999. v, 58p, il. Orientador: Sergio Stringari.
MELLO, Jorge Lucas de; PERICAS, Francisco Adell; UNIVERSIDADE REGIONAL DE
BLUMENAU. Prototipo de um agente SNMP para uma rede local utilizando a
plataforma JDMK. , 2000. x, 88p, il. Orientador: Francisco Adell Pericas.
REKOWSKY, Ricardo Henrique; STRINGARI, Sergio; UNIVERSIDADE REGIONAL DE
BLUMENAU, Centro de Ciencias Exatas e Naturais. Prototipo de Software para a
monitoracao de desempenho de redes, utilizando o RMON. , 1999. 88p, il. Orientador:
Sergio Stringari.
SCHULZ, Murilo Alexandre. Protótipo de software de gerência de desempenho de um
access point de rede sem fio utilizando o protocolo SNMP. 2004. Trabalho de Conclusão
de Curso (Engenharia de Telecomunicações) – Centro de Ciências Tecnológicas,
Universidade Regional de Blumenau, Blumenau.
SZTAJNBERG, Alexandre. Gerenciamento de redes – Conceitos básicos sobre os
protocolos SNMP e CMIP. Rio de Janeiro, [1996]. Disponível em:
<http://www.gta.ufrj.br/~alexszt/ger/snmpcmip.html>. Acesso em: 20 de Outubro de 2007.
SOARES, Luiz Fernando G.; LEMOS, Guido; COLCHER, Sérgio. Redes de computadores:
das LANs, MANs e WANs as redes ATM. 2. ed. rev. e ampl. Rio de Janeiro : Campus,
1995. 705p, il.
STALLINGS, William. SNMP, SNMPv2, SNMPv3, and RMON 1 and 2. 3rd ed. Boston :
Addison-Wesley, 1999. xv, 619p, il.
52
TANENBAUM, Andrew S. Redes de computadores. Rio de Janeiro : Campus, 2003. 945 p,
il. Tradução de: Computers Networks.
53
ANEXO
A seguir são listados os códigos fonte de todos os módulos do software. Estes códigos
estão escritos na linguagem própria do AutoIT. Cada um deles deve ser salvo com extensão
.au3 e compilado no AutoIT, que é gratuito e encontra-se em: http://www.autoitscript.com/.
Para compilação dos módulos deve-se proceder da seguinte forma:
a) abrir o arquivo com extensão .au3 no SciTE, que faz parte do pacote AutoIT;
b) selecionar a opção tools e em seguinda compile;
c) informar o arquivo executável de destino em target e selecionar compile script.
Para o correto funcionamento do software se faz necessária a existência de três pastas
criadas dentro do diretório de instalação: INI, TMP e EXEC. A pasta INI contém dois
arquivos .ini que servirão de base para o programa, o EQUIP.INI e o CONFIG.INI. No
diretório TMP ficarão armazenados os arquivos temporários necessários durante o
funcionamento do software e por fim, na pasta EXEC estará instalado o software
SNMPWALK,
disponível
em:
http://download.netiq.com/kb/files/NETIQKB46308_snmpwalk.exe . É fundamental para o
funcionamento do programa, que o software SNMPWALK seja renomeado para
snmpwalk.exe.
O conteúdo dos aquivos .INI em forma de texto é o seguinte:
a) EQUIP.INI:
[IP_LOCAL]
b) CONFIG.INI:
[CONFIG]
COMUNIDADE=
POLLING=
IP=
MÓDULO PRINCIPAL:
54
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=TELA_PRINCIPAL.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiConstants.au3>
#include <GuiListView.au3>
#include <file.au3>
#include <Date.au3>
#include <misc.au3>
$TELA = GUICreate("TCC Mon", 435, 580, 200,100,$WS_SYSMENU)
GUICtrlCreateLabel("Elementos gerenciados:",20,10,200,20)
$listview = GUICtrlCreateListView("IP
|LOCAL
20, 30, 390, 410)
|STATUS
ABRIR()
$Btn_DeleteItem = GUICtrlCreateButton("Excluir", 120, 450, 90, 40)
$Btn_IncluirItem = GUICtrlCreateButton("Incluir", 20, 450, 90, 40)
$Btn_Status = GUICtrlCreateButton("Status", 220, 450, 90, 40)
$Btn_Info = GUICtrlCreateButton("Informações", 320, 450, 90, 40)
$Btn_Inter = GUICtrlCreateButton("Interfaces", 120, 500, 90, 40)
$Btn_Syslog = GUICtrlCreateButton("Syslog", 20, 500, 90, 40)
$Btn_Config = GUICtrlCreateButton("Configurações", 220, 500, 90, 40)
$Btn_Exit = GUICtrlCreateButton("Sair", 320, 500, 90, 40)
GUISetState()
While 1
WinSetTitle($TELA, "", "TCC Network Monitor - " & _Now() & "")
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
ProcessClose("INFO.EXE")
ProcessClose("SELETOR.EXE")
ProcessClose("SYSLOG.EXE")
ProcessClose("STATUS_INT.EXE")
ProcessClose("INFO.EXE")
ExitLoop
Case $msg = $Btn_DeleteItem
EXCLUIR ()
Case $msg = $Btn_Status
STATUS ()
Case $msg = $Btn_IncluirItem
INCLUIR ()
Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
ExitLoop
Case $msg = $Btn_Info
INFO ()
Case $msg = $Btn_Inter
INTER ()
Case $msg = $Btn_Syslog
SYSLOG ()
Case $msg = $Btn_Config
run("CONFIG.EXE")
EndSelect
WEnd
Func EXCLUIR ()
$Output_item
= GUICtrlRead($listview)
If $Output_item <> 0 Then
$RESULTADO = StringSplit (GUICtrlRead(GUICtrlRead($listview)),"|")
",
55
_GUICtrlListViewDeleteItem ($listview, Int(GUICtrlRead($Output_item)))
IniWrite ("INI\EQUIP.ini","IP_LOCAL",$RESULTADO[1],"")
FileClose("INI\EQUIP.ini")
EndIf
_GUICtrlListViewDeleteAllItems($listview)
ABRIR()
EndFunc
Func INCLUIR ()
$IP = InputBox (" TCC Network Monitor ","Favor digitar o IP do equipamento:","","")
$LOCAL = InputBox (" LOCAL ","Favor digitar o local:","","")
if $IP = '' Or $LOCAL = '' Then
MsgBox (0,"ERRO","FAVOR PREENCHER OS CAMPOS IP E LOCAL")
Else
_GUICtrlListViewInsertItem ($listview, 0, $IP&"|"&$LOCAL)
IniWrite("INI\EQUIP.ini","IP_LOCAL",$IP,$LOCAL)
EndIf
_GUICtrlListViewDeleteAllItems($listview)
ABRIR()
EndFunc
Func STATUS ()
$FILE_EQUIP = FileOpen ("INI\EQUIP.ini",0)
While 1
$LINE_EQUIP = FileReadLine ($FILE_EQUIP)
If @error = -1 Then ExitLoop
If StringInStr ($LINE_EQUIP,"=") Then
$SPLIT_EQUIP = StringSplit ($LINE_EQUIP,"=")
If $SPLIT_EQUIP[2] <> "" Then
If Ping($SPLIT_EQUIP[1],3000)=0 Then
_GUICtrlListViewDeleteItem ($listview, Int(GUICtrlRead(0)))
GUICtrlCreateListViewItem($SPLIT_EQUIP[1]&"|"&$SPLIT_EQUIP[2]&"|FALHA!!!", $listview)
Else
GUICtrlCreateListViewItem($SPLIT_EQUIP[1]&"|"&$SPLIT_EQUIP[2]&"|OK", $listview)
_GUICtrlListViewDeleteItem ($listview, Int(GUICtrlRead(0)))
EndIf
EndIf
EndIf
WEnd
FileClose("INI\EQUIP.ini")
EndFunc
Func INTER()
$IP = StringSplit(GUICtrlRead(GUICtrlRead($listview)),"|")
FileClose("INI\IP.TMP")
FileDelete("INI\IP.TMP")
IniWrite("INI\IP.TMP","IP",$IP[1],' ')
Run ("SELETOR.exe")
EndFunc
Func ABRIR()
$FILE_EQUIP = FileOpen ("INI\EQUIP.ini",0)
While 1
$LINE_EQUIP = FileReadLine ($FILE_EQUIP)
If @error = -1 Then ExitLoop
If StringInStr ($LINE_EQUIP,"=") Then
$SPLIT_EQUIP = StringSplit ($LINE_EQUIP,"=")
56
If $SPLIT_EQUIP[2] <> "" Then
GUICtrlCreateListViewItem($SPLIT_EQUIP[1]&"|"&$SPLIT_EQUIP[2], $listview)
EndIf
WEnd
FileClose("INI\EQUIP.ini")
EndFunc
Func SYSLOG ()
Run("SYSLOG.exe")
EndFunc
Func INFO()
$IP = StringSplit(GUICtrlRead(GUICtrlRead($listview)),"|")
FileClose("INI\IP.TMP")
FileDelete("INI\IP.TMP")
IniWrite("INI\IP.TMP","IP",$IP[1],' ')
Run("INFO.EXE")
EndFunc
Exit
57
MÓDULO INFORMAÇÕES:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=INFO.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiConstants.au3>
#include <Process.au3>
#NoTrayIcon
$IP_TMP = ("INI\IP.TMP")
$IP = IniReadSection("INI\IP.TMP","IP")
If Ping($IP[1][0],3000)=0 Then
MsgBox(16,"FALHA","Falha de comunicação com o equipamento!")
Exit
Endif
$CONFIG = IniReadSection("INI\CONFIG.INI","CONFIG")
$COM = $CONFIG[1][1]
If @error Then Exit
$TELA = GUICreate($IP[1][0], 360, 190,635 , 490,$WS_SYSMENU)
GUISetState ()
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.1.1 >
TMP\INFO_TEMP.TXT")
$TESTE = FileOpen("TMP\INFO_TEMP.TXT",0)
$LINE_TESTE = FileReadLine ($TESTE)
If $LINE_TESTE = "" Then
MsgBox(16,"FALHA","Falha de comunicação com o equipamento! Verifique a comunidade SNMP.")
FileClose($TESTE)
Exit
EndIf
FileWrite("TMP\INFO.INI","")
$TempFile = FileOpen ("TMP\INFO_TEMP.TXT",0)
$BEGIN=0
While 1
$Linha = FileReadLine($TempFile)
If @error = -1 Then ExitLoop
$Array = StringSplit($Linha, '=')
$Array[2]=StringReplace (StringReplace ($Array[2]," ",""),'"',"")
$ArrayF=StringSplit($Array[2],",")
IniWrite("INI\INFO.ini","INFO","EQUIPAMENTO",$ArrayF[2])
WEnd
FileClose($TempFile)
FileDelete("TMP\INFO_TEMP.TXT")
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.1.1 >
TMP\INFO_TEMP.TXT")
FileWrite("TMP\INFO.INI","")
$TempFile = FileOpen ("TMP\INFO_TEMP.TXT",0)
$BEGIN=0
While 1
58
$Linha = FileReadLine($TempFile)
If @error = -1 Then ExitLoop
$Array = StringSplit($Linha, '=')
$Array[2]=StringReplace (StringReplace ($Array[2]," ",""),'"',"")
$ArrayF=StringSplit($Array[2],",")
IniWrite("INI\INFO.ini","INFO","SOFTWARE",$ArrayF[3])
WEnd
FileClose($TempFile)
FileDelete("TMP\INFO_TEMP.TXT")
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.1.5 >
TMP\INFO_TEMP.TXT")
FileWrite("TMP\INFO.INI","")
$TempFile = FileOpen ("TMP\INFO_TEMP.TXT",0)
$BEGIN=0
While 1
$Linha = FileReadLine($TempFile)
If @error = -1 Then ExitLoop
$Array = StringSplit($Linha, '=')
$Array[2]=StringReplace (StringReplace ($Array[2]," ",""),'"',"")
IniWrite("INI\INFO.ini","INFO","HOST",$Array[2])
WEnd
FileClose($TempFile)
FileDelete("TMP\INFO_TEMP.TXT")
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.1.3 >
TMP\INFO_TEMP.TXT")
FileWrite("TMP\INFO.INI","")
$TempFile = FileOpen ("TMP\INFO_TEMP.TXT",0)
$BEGIN=0
While 1
$Linha = FileReadLine($TempFile)
If @error = -1 Then ExitLoop
$Array = StringSplit($Linha, '=')
$Array2 = StringSplit($Array[2], ')')
IniWrite("INI\INFO.ini","INFO","UPTIME",$Array2[2])
WEnd
FileClose($TempFile)
FileDelete("TMP\INFO_TEMP.TXT")
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.1.4 >
TMP\INFO_TEMP.TXT")
FileWrite("TMP\INFO.INI","")
$TempFile = FileOpen ("TMP\INFO_TEMP.TXT",0)
$BEGIN=0
While 1
$Linha = FileReadLine($TempFile)
If @error = -1 Then ExitLoop
$Array = StringSplit($Linha, '=')
$Array[2]=StringReplace (StringReplace ($Array[2]," ",""),'"',"")
IniWrite("INI\INFO.ini","INFO","CONTATO",$Array[2])
WEnd
FileClose($TempFile)
59
FileDelete("TMP\INFO_TEMP.TXT")
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.1.6 >
TMP\INFO_TEMP.TXT")
FileWrite("TMP\INFO.INI","")
$TempFile = FileOpen ("TMP\INFO_TEMP.TXT",0)
$BEGIN=0
While 1
$Linha = FileReadLine($TempFile)
If @error = -1 Then ExitLoop
$Array = StringSplit($Linha, '=')
$Array[2]=StringReplace (StringReplace ($Array[2]," ",""),'"',"")
IniWrite("INI\INFO.ini","INFO","LOCAL",$Array[2])
WEnd
FileClose($TempFile)
FileDelete("TMP\INFO_TEMP.TXT")
$EQUIP= IniReadSection ("INI\INFO.INI","INFO")
GUICtrlCreateLabel ($EQUIP[1][0] & " : " & $EQUIP[1][1],10,15)
GUICtrlCreateLabel ($EQUIP[2][0] & " : " & $EQUIP[2][1],10,40)
GUICtrlCreateLabel ($EQUIP[3][0] & " : " & $EQUIP[3][1],10,65)
GUICtrlCreateLabel ($EQUIP[4][0] & " : " & $EQUIP[4][1],10,90)
GUICtrlCreateLabel ($EQUIP[5][0] & " : " & $EQUIP[5][1],10,115)
GUICtrlCreateLabel ($EQUIP[6][0] & " : " & $EQUIP[6][1],10,140)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
WEnd
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.2.2.1.8 >
TMP\TEMP1.TXT")
60
MÓDULO SELEÇÃO DE INTERFACES:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=SELETOR.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiConstants.au3>
#include <GuiListView.au3>
#include <file.au3>
#include <Process.au3>
#NoTrayIcon
GUICreate("Scriptioooo", 730, 400,(@DesktopWidth-730)/2, (@DesktopHeight-400)/2 )
$IP_TMP = ("INI\IP.TMP")
$INTER = ("TMP\INTERFACES.TXT")
$IP = IniReadSection("INI\IP.TMP","IP")
If Ping($IP[1][0],3000)=0 Then
MsgBox(16,"FALHA","Falha de comunicação com o equipamento!")
Exit
Endif
$CONFIG = IniReadSection("INI\CONFIG.INI","CONFIG")
$COM = $CONFIG[1][1]
If @error Then Exit
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.2.2.1.8 >
TMP\TEMP1.TXT")
$TESTE = FileOpen("TMP\TEMP1.TXT",0)
$LINE_TESTE = FileReadLine ($TESTE)
If $LINE_TESTE = "" Then
MsgBox(16,"FALHA","Falha de comunicação com o equipamento! Verifique a comunidade SNMP.")
FileClose($TESTE)
Exit
EndIf
FileDelete("INI\COM.TMP")
FileDelete("INI\INTLIST_SELECT.INI")
FileDelete("INI\INTLIST_SELECT2.INI")
FileDelete("TMP\STATUS.txt")
FileWrite("INI\INTLIST_SELECT.INI",'')
FileWrite("INI\INTLIST_SELECT2.INI",'')
IniWrite("INI\COM.TMP","COMMUNITY",$COM,' ')
;Lê o IP do Equipamento
$IP_T = IniReadSection($IP_TMP,"IP")
$IP = $IP_T[1][0]
;Faz a coleta das interfaces:
_RunDOS ("EXEC\SNMPWALK.exe " & $IP & " " & $COM & " .iso.3.6.1.2.1.2.2.1.2 >
TMP\TEMP2.TXT")
FileClose($COM)
61
;Lê interfaces
FileWrite("TMP\INTERFACES.TXT","")
GUICtrlCreateLabel ("Interfaces disponíveis:",40,30)
GUICtrlCreateLabel ("Interfaces monitoradas:",430,30)
$TempFile = FileOpen ("TMP\TEMP2.TXT",0)
$BEGIN=0
While 1
;Le próxima linha do arquivo temporário
$Linha = FileReadLine($TempFile)
;Se der erro (fim do arquivo) sai do loop
If @error = -1 Then ExitLoop
;Le próxima linha do arquivo temporário com as interfaces
$Array = StringSplit($Linha, '=')
$Array[2]=StringReplace (StringReplace ($Array[2]," ",""),'"',"")
$IS0=StringSplit($Array[1],".")
$ISO_F=$IS0[12]
FileWriteLine($INTER,$ISO_F & "=" & $Array[2])
WEnd
FileClose($TempFile)
$listview_2 = GUICtrlCreateListView("INSTANCIA |DESCRICÃO
$FILE_EQUIP_2 = FileOpen ($INTER,0)
", 40, 60, 250, 300)
While 1
$LINE_EQUIP_2 = FileReadLine ($FILE_EQUIP_2)
If @error = -1 Then ExitLoop
If StringInStr ($LINE_EQUIP_2,"=") Then
$SPLIT_EQUIP_2 = StringSplit ($LINE_EQUIP_2,"=")
If $SPLIT_EQUIP_2[2] <> "" Then
GUICtrlCreateListViewItem($SPLIT_EQUIP_2[1]&"|"&$SPLIT_EQUIP_2[2], $listview_2)
EndIf
WEnd
FileClose($INTER)
$listview = GUICtrlCreateListView("INSTANCIA |DESCRICÃO
$Btn_IncluirItem = GUICtrlCreateButton("Incluir =>", 315, 100, 90, 40)
$Btn_Exit = GUICtrlCreateButton("SAIR", 315, 280, 90, 40)
$Btn_Status = GUICtrlCreateButton("STATUS", 315, 190, 90, 40)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
CLOSE()
ExitLoop
Case $msg = $Btn_IncluirItem
INCLUIR ()
Case $msg = $Btn_Status
Run ("STATUS_INT.exe")
Exit
EndSelect
WEnd
Func INCLUIR ()
", 430, 60, 250, 300)
62
$Input_item = GUICtrlRead(GUICtrlRead($listview_2))
If $Input_item <> 0 Then
$RESULTADO = StringSplit ($Input_item,"|")
_GUICtrlListViewInsertItem ($listview, 0, $Input_item)
IniWrite ("INI\INTLIST_SELECT.INI","IP_LOCAL",$RESULTADO[1],$RESULTADO[2])
EndIf
EndFunc
Func CLOSE()
FileClose("TMP\TEMP2.TXT")
FileClose("TMP\TEMP1.TXT")
FileClose("INI\IP.INI")
FileClose("TMP\INTERFACES.TXT")
FileClose("TMP\STATUS.TXT")
FileClose($FILE_EQUIP_2)
FileDelete("TMP\TEMP2.TXT")
FileDelete("TMP\TEMP1.TXT")
FileDelete("INI\IP.INI")
FileDelete("TMP\STATUS.TMP")
FileDelete("TMP\INTERFACES.TXT")
FileWrite("TMP\TEMP2.TXT","")
FileWrite("TMP\TEMP1.TXT","")
EndFunc
Exit
63
MÓDULO MONITOR DE INTERFACES:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=STATUS_INT.EXE
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiConstants.au3>
#include <GuiListView.au3>
#include <file.au3>
#include <Process.au3>
#NoTrayIcon
$IP = IniReadSection("INI\IP.TMP","IP")
$CONFIG = IniReadSection("INI\CONFIG.INI","CONFIG")
$COM = $CONFIG[1][1]
GUICreate($IP[1][0] & " - Status das interfaces monitoradas", 360, 390,635 , 100,$WS_MINIMIZEBOX)
GUICtrlCreateLabel ("Pressione F10 para fechar...",100,340)
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.2.2.1.8 >
TMP\STATUS.TXT")
$TESTE = FileOpen("TMP\STATUS.TXT",0)
$LINE_TESTE = FileReadLine ($TESTE)
If $LINE_TESTE = "" Then
MsgBox(16,"FALHA","Falha de comunicação com o equipamento! Verifique a comunidade SNMP.")
FileClose($TESTE)
Exit
EndIf
$listview = GUICtrlCreateListView("INSTANCIA |DESCRICÃO
|STATUS
", 25, 20, 300, 300)
HotKeySet("{F10}", "FIM")
GUISetState()
While 1
FileCopy("INI\INTLIST_SELECT.INI","INI\INTLIST_SELECT2.INI",1)
$FILE_EQUIP = FileOpen ("INI\INTLIST_SELECT2.INI",0)
FileClose("INI\INTLIST_SELECT2.INI")
While 1
$LINE_EQUIP = FileReadLine ($FILE_EQUIP)
If @error = -1 Then ExitLoop
If StringInStr ($LINE_EQUIP,"=") Then
$SPLIT_EQUIP = StringSplit ($LINE_EQUIP,"=")
If $SPLIT_EQUIP[2] <> "" Then
$FILE_2 = FileOpen("TMP\STATUS.txt",0)
FileClose("TMP\STATUS.TXT")
;~
MsgBox(0,"","abriu o status")
While 1
$LINE_2 = FileReadLine($FILE_2)
If $LINE_2 = "" Then ExitLoop
If @error = -1 Then ExitLoop
If StringInStr($LINE_2,"=") Then
$SPLIT_2 = StringSplit($LINE_2,"=")
$IS0_1 = StringReplace($SPLIT_2[1]," ","")
$IS0_2 =
StringReplace(".iso.3.6.1.2.1.2.2.1.8."&$SPLIT_EQUIP[1]," ","")
;~
MsgBox(0,"",$IS0_2)
If $IS0_1 = $IS0_2 Then
If $SPLIT_2[2] = " 1" Then
GUICtrlCreateListViewItem($SPLIT_EQUIP[1]&"|"&$SPLIT_EQUIP[2]&"|UP", $listview)
Else
If $SPLIT_2[2] = " 2" Then
64
GUICtrlCreateListViewItem($SPLIT_EQUIP[1]&"|"&$SPLIT_EQUIP[2]&"|DOWN", $listview)
Else
GUICtrlCreateListViewItem($SPLIT_EQUIP[1]&"|"&$SPLIT_EQUIP[2]&"|INDEFINIDO",
$listview)
EndIf
EndIf
EndIf
EndIf
WEnd
FileClose($FILE_2)
EndIf
EndIf
WEnd
FileClose ($FILE_EQUIP)
Sleep($CONFIG[2][1])
FileDelete("INI\STATUS.TXT")
_RunDOS ("EXEC\SNMPWALK.exe " & $IP[1][0] & " " & $COM &" .1.3.6.1.2.1.2.2.1.8 >
TMP\STATUS.TXT")
While 1
If (_GUICtrlListViewDeleteItem ($listview,0))=0 Then ExitLoop
WEnd
WEnd
Func FIM()
FileClose("TMP\TEMP2.TXT")
FileClose("TMP\TEMP1.TXT")
FileClose("INI\IP.INI")
FileClose("TMP\INTERFACES.TXT")
FileClose("TMP\STATUS.TXT")
FileDelete("TMP\TEMP2.TXT")
FileDelete("TMP\TEMP1.TXT")
FileDelete("INI\IP.INI")
FileDelete("TMP\STATUS.TMP")
FileDelete("TMP\INTERFACES.TXT")
FileWrite("TMP\TEMP2.TXT","")
FileWrite("TMP\TEMP1.TXT","")
Exit
EndFunc
Exit
65
MÓDULO CONFIGURAÇÕES:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=CONFIG.EXE
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiConstants.au3>
#NoTrayIcon
$TELA = GUICreate("Configurações Gerais", 300, 120,(@DesktopWidth-300)/2, (@DesktopHeight120)/2,$WS_SYSMENU)
GUISetState ()
$CONFIG = IniReadSection ("INI\CONFIG.INI","CONFIG")
GUICtrlCreateLabel ("Comunidade SNMP : " & $CONFIG[1][1],10,15)
GUICtrlCreateLabel ("Tempo de Polling : " & $CONFIG[2][1],10,40)
GUICtrlCreateLabel ("IP da máquina local : " & $CONFIG[3][1],10,65)
$ALT_COMM = GUICtrlCreateButton("ALTERAR", 200, 10, 90, 20)
$ALT_POLL = GUICtrlCreateButton("ALTERAR", 200, 35, 90, 20)
$ALT_IP = GUICtrlCreateButton("ALTERAR", 200, 60, 90, 20)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $ALT_COMM
$COMM_1 = InputBox (" TCC Network Monitor ","Favor digitar a comunidade
padrão de SNMP dos equipamentos:","","")
IniWrite("INI\CONFIG.INI","CONFIG","COMUNIDADE",$COMM_1)
GUICtrlCreateLabel ("
",10,15)
GUICtrlCreateLabel ("Comunidade SNMP : " & $COMM_1,10,15)
Case $msg = $ALT_POLL
$POLL_1 = InputBox (" TCC Network Monitor ","Favor digitar o tempo de polling
das interfaces (em minutos):","","")
IniWrite("INI\CONFIG.INI","CONFIG","POLLING",$POLL_1*60000)
GUICtrlCreateLabel ("
",10,40)
GUICtrlCreateLabel ("Tempo de Polling (min) : " & $POLL_1,10,40)
Case $msg = $ALT_IP
$IP_1 = InputBox (" TCC Network Monitor ","Favor digitar endereço da máquina
local:","","")
IniWrite("INI\CONFIG.INI","CONFIG","IP",$IP_1)
GUICtrlCreateLabel ("
",10,65)
GUICtrlCreateLabel ("IP da máquina local : " & $IP_1,10,65)
EndSelect
WEnd
Fi
66
MÓDULO SYSLOG:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=SYSLOG.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiConstants.au3>
#NoTrayIcon
$CONFIG = IniReadSection("INI\CONFIG.INI","CONFIG")
$IP = $CONFIG[3][1]
GuiCreate("TCC Monitor - SYSLOG", 795, 100, 200,680, $WS_SYSMENU)
$Edit_1 = GuiCtrlCreateEdit("", 0, 0, 790, 85)
UDPStartup()
$array = UDPBind($IP, 514)
If $array = -1 Then MsgBox(0, "WSAGetLastError", @Error)
GuiSetState()
While 1
$msg = UDPRecv($array, 100)
If $msg <> "" Then
GUICtrlSetData($Edit_1, GUICtrlRead($Edit_1) & @CRLF & $msg)
EndIf
If GUIGetMsg() = $GUI_EVENT_CLOSE Then
Exit
EndIf
WEnd
Exit
Func OnAutoItExit()
UDPCloseSocket($array)
UDPShutdown()
EndFunc
Download

Ferramenta para Gerenciamento de Falhas em Rede Ethernet