Download gerencia de redes lan - TCC On-line
Transcript
Helio Ishii Stroparo Rafael Avila Leite GEREN CIA DE REDES LAN Monografia Graduactao a apresentada disciplina Projeto de do Curso de Tecnologia em Informatica da Faculdade de Ciencias Exatas e de Tecnologia da Universidade Tuiuti do Parana como requisito para obtenc;ao do grau de Tecn61ago em Informatica. Orientador: CURITIBA 2006 Roberto Neia Amaral Agradecemos aos professores do Curso de Tecnologia em Informatica pelo incentivo con stante no decorrer de todD esse tempo de estudo. Dedicamas esta abra a nassas famflias, primeiramente, pelo apoio, e em especial ao meu orientador professor Roberto NEiia Amaral, par nos abrir 0 campo de visaa para novas horizantes. Educagao e aquilo que resta quando nos esquecemos daquilo que nos foi ensinado. Michael Hammer RESUMO Este trabalho tem por objetivo 0 desenvolvimento de um prot6tipo gratuito, on de seja possivel gerenciar os ativos de uma rede de dados. Busca-se realizar a proposta, com 0 intuito de proporcionar aos administradores de redes, atraves de um algoritmo estruturado nos conceitos de gerenciamento de redes, redes de dados e linguagens de programagao, melhora na disponibilidade dos recursos de redes bem como na performance de atendimento aos usuarios. 0 prot6tipo propoe urn gerenciamento de redes LAN que permita ao administrador de redes tomar decisoes quanto aos problemas que estao ocorrendo, como tambem as que podem Deorrer, favorecendo a analise critica do funcionamento Palavras-chave: de uma rede de dad os. Rede de Dados, Administradores de Redes, Gerenciamento. LlSTA DE FIGURAS FIGURA 1 - Repetidor FIGURA 2 - Hubs FIGURA 3 - Bridges FIGURA 4 - Switchs FIGURA 5 - Roteadores FIGURA 6 - Estrutura . . . . 16 16 17 . ·· .... 18 ....... 19 Geral do Prot6tipo ........................................... 39 LlSTA DE TABELAS QUADRO 1 - Compara,e.o entre topologias .............................•............................. 23 SUMARIO 1 INTRODU<;:Ao.. . 2 REFERENCIAL 2.1 TIPOS . . 10 ....... 12 TEORICO DE REDES DE DAD OS ....... 13 . . 2.1.1 LAN - Local Area Network 2.1.2 WAN - Wide Area Network 2.2 TIPOS DE DISPOSITIVOS 2.2.1 Repetidor 13 . . DE REDE DE DADOS 15 . . 15 ............................... ..... 15 ..16 2.2.2 Hub .. 2.2.3 Bridges ...... 17 2.2.4 Switch ...... 18 .......................................... 2.2.5 Roteador 2.3 TIPOS DE TOPOLOGIAS 19 DE REDE DE DAD OS 19 ...... 20 2.3.1 Estrela .. 2.3.2 Anel.. . 2.3.3 Barramento.. 2.4 TIPOS DE PAD ROES DE TRANSMISsAo 2.4.1 Ethernet 22 EM REDE DE DADOS. . . . 2.5.1 SNMP . 24 DE REDES .. 25 ~ ......................................................... 2.5.2 RMON .. 2.5.3 Sistemas . de Gerenciamento 2.6 NECESSIDADES 26 OSI 27 DO GERENCIAMENTO DE REDES......... 2.7 HISTORICO DO GERENCIAMENTO DE REDES.... 2.8 SOFTWARE DE GERENCIAMENTO DE REDES 2.8.1 HP Open View 2.8.2 NetView . 36 . . . 2.8.4 Sun Net Manager .. 3.1 LlNGUAGEM . . . 38 38 39 DE FUNCIONAMENTO DE FUNCIONAMENTO 3.5 MANUAL DO USUARIO 3.6 MANUAL DE INSTALA<;:Ao 3.7 DFD - DIAGRAMA 36 37 ... DE PROGRAMA<;:AO 36 37 . 3.2 PRE-REQUISITOS 3.3 ESTRUTURA 31 . . 3 METODOLGIA 29 . . 2.8.3 Spectrum 23 .......... 23 2.4.2 Token Ring 2.5 GERENCIAMENTO 3.4 PRINCIPIO 21 . DO PROTOTIPO .. . 39 DO PROTOTIPO 40 . .. . DE FLUXO DE DADOS .. . 40 . 48 . 63 3.8 DER - DIAGRAMA DE ENTIDADE E RELACIONAMENTO 63 4 TESTES. .......... 64 5CONLUSAO . . REFERENCIAS. 65 . ANEXO 1 - BIBLIOTECA PING ANEXO 2 - BIBLIOTECA ICMP APENDICE 1 - Form_Banco APENDICE 2 - Form_CadastroComputadores APENDICE 3 - Form_CadGrupos APENDICE 4 - Form_GeraRelatorios APENDICE 5 - Form_RelatorioAlivo APENDICE 6 - Form_RelatoriosPeriodo APENDICE 7 - Biblioteca Ping Modificada . . 67 . 68 .................. 78 ................ 86 ................. 87 . 89 ... 91 92 .......... 94 ....... 97 10 1 INTRODU<;:Ao A area de gerenciamento de redes foi inicialmente impulsionada pela necessidade de monitoragao e controle do universo de ativos que compoem as redes de dados. Atualmente as redes de computadores e os seus recursos associados, ali§m das aplicagoes distribuidas, tem se tornado fundamental e de tal importancia para uma organizagao, onde 0 tempo de indisponibilidade afeta diretamente 0 desempenho das organizagoes. Isto significa que 0 nivel de falhas e de indisponibilidade considerados aceitaveis estao diminuindo, podendo chegar a ate zero, dependendo da importancia da rede para uma organizagao. o gerenciar objetivo geral deste projeto e desenvolver um prot6tipo que permita 0 estado dos ativos de uma rede de dados. 0 prot6tipo sera desenvolvido em Delphi para ser utilizado com 0 sistema operacional Windows 2000 ou XP. Os dados coletados durante 0 gerenciamento serao disponibilizados em banco de dados Interbase, possibilitando que os administradores de redes reconhegam os pontes vulneraveis de suas redes e planejar futuros investimentos melhorias em sua disponibilidade. Em um primeiro momenta foram realizados estudos com 0 objetivo de adquirir conhecimento sobre os programas e softwares ja existentes para gerenciamento. Nesse estudo nao se trata de validar ou invalidar as rotinas de gerenciamento, mas de compreende-Ios e de saber distinguir as implica~6esde cada um e os metodos que podem ser utilizados para implementa-Ios. 11 Na sequencia do trabalho foi realizada uma revisao bibliogr8.fica com 0 objetivo de fundamentar 0 estado do conhecimento neste presente, com 0 intuito de se conhecer 0 que js. foi realizado em termos de pesquisa sobre 0 assunto. Esta fundamenta9ao te6rica foi direcionada ao loco principal deste trabalho, 0 qual e 0 gerenciamento de redes LAN. Ap6s a pesquisa para verilicar as principais ideias que lundamentaram 0 tema loi apresentada a proposta que consiste em uma alternativa para 0 desenvolvimento de urn prot6tipo para 0 gerenciarnento de redes LAN. 12 2 REFERENCIAL TEORICO Computadores interconectados podem trabalhar mais pelos usuarios, e quando as pessoas trabalham em equipes, concretizam tarefas inteiras, num menor espago de tempo e com menos esforgo. Pode-se imaginar uma rede como um recurso valioso, projetada para apoiar uma equipe de usuarios. Interconectar os computadores, assim como gerenciar um grupo de pessoas e sem duvida um desafio. 0 custo pode ter uma enorme variagao. Os beneficios de se conectar os recursos podem ser grandes e podem significar um avango incalculavel de beneficios que um micro isolado nunca poderia apresentar. Atenta aos possiveis beneficios e recompensas, e apesar dos riscos, as empresas estao interconectando seus computadores em rftimo acelerado. Antigamente as redes eram de dificil instalagao e manutengao exigindo mao de obra altamente qualificada, mas atualmente isto esta mudando, hoje encontra-se componentes de hardware (kits) para instalagao de redes que qualquer pessoa pode instalar. Em um ambiente profissional e muito importante um responsavel pelo bom funcionamento da rede, dentre as responsabilidades deste cita-se: coordenar tarefas, I gerenciar problemas, manilorar processos, administrar usuarios, entre outros. I I Sem duvida alguma, um dos maiores beneficios de uma rede compartilhamento de informa90es entre as usuarios armazenamento final superior ao que I I OU e 0 mesma oferecer urn meio de e utilizado sem a rede. 13 2.1 TIPOS DE REDES DE DADOS Atualmente pode-se contar com alguns tipos de rede quando a sua disposigao fisica. 2.1.1 LAN - Local Area Network - Aede de alcance local Aedes locais (LANs) sao basicamente um grupo de computadores interconectados e opcionalmente conectado a urn servidor. I I \I as usuarios executam tarefas a partir de seus computadores. Entre as tarefas pode-se destacar as bancos de dados, planilhas e editores de texto. Normalmente tem-se urn grupo destes usuarios executando uma operagao no servidor. Atualmente encontram~se velocidades de comunicac;ao das redes locais entre 10 e 100 Mbps (Mega bits par segundo) e 1 Gbps (Giga bits por segundo). A utilizagao de urn padrao mais veloz estara na necessidade do usuario. Aedes de 100 Mbps e 1 Gbps exigem hardware especial (placas, switchs e hubs). Aedes de 100 Mbps e 1 Gbps sao recomendadas onde a velocidade fundamental necessaria ao born funcionamenta, troca de normal mente e e utilizada em locais ande seja informac;oes como som e imagem au tambem em redes maiores. As redes de 10 Mbps sao instaladas em ambiente onde nao e necessaria executar aplicagoes no servidor com frequencia, pois isto tornaria lenta a velocidade de comunicac;ao entre os equipamentos. 14 Quanto ao tipo de cabeamento, para as redes de 10 Mbps pode-se utilizar tanto 0 cabo coaxial (10Base2) ou par tran,ado (10BaseT). Em uma rede 100 Mb ou 1 Gbps necessariamente utiliza-se cabos de par tran,ado (1OOBaseTe 1000BaseT). Os m6dulos mais importantes de uma rede local sao: Servidores - Sao processamento, cuja fun,ao computadores que elevam a capacidade do e disponibilizar servi,os a rede. Em geral essa maquina processa grandes volumes de dados requerendo por tanto CPUs (Center Process Units) rapidas e dispositivos de anmazenamento de alta capacidade e acesso rapido. Estas maquinas poderao ser fornecidas por fabricantes especializados (IBM®, INTEL®, entre outros) e par serem maquinas especiais entre as outras, possuem caracteristicas naD encontradas nos modelos mais simples. Em uma rede baseada em servidor, tem-se normalmente operacionais mais potentes, sistemas sen do necessaria urn estudo mais criterioso para a defini,ao de qual Sistema Operacional utilizar. ! PC Desktop (Personal Computer) - Os PCs clientes tambem conhecidos por I Workstation i\ I II (esta,ao de trabalho) individuais de trabalho. A partir dela os usuarios acessam informa,6es no servidor (Banco de dados, entre outros) e rodam aplica,6es locais (Microsoft Word, Microsoft Excel, entre outros). 0 hardware workstation podem variar, pois dependera das infarma,6es a ssrem processados. Recursos - Entre as recurses a serem utilizados na Gomunicag8.o entre as I equipamentos pode-se citar: os Switchs II cabos par-tran,ado, placas de rede, repetidores, Bridges I I da outros. (comutadores), os Hubs, cabo coaxial, (pontes), roteadares, entre 15 2.1.2 WAN - Wide Area Network - Rede de alcance remoto As WANs utilizam linhas de transmissao oferecidas por operadaras de telecomunica<;6es,com 0 objetivo de Interliga<;aode computadores geograficamente distantes. A necessidade de transmissao de dados entre computadares surgiu com os mainframes, bem antes do aparecimento dos PCs. Com os PCs houve um aumento da demanda por transmissao de dados a longa distancia. Isto levou ao surgimento de diversos seNi<;osde transmissao de dados (RENPAC, TRANS DATA, MINASPAC). Os seNi<;ossao geralmente de aluguel de linhas privadas ou discadas permitindo a utiliza<;ao de diversos protocolos tais como SNA, PPP e TCP, entre outros. Hoje em dia as redes WANs utilizam meios de transmissao de fibras 6pticas e protocolos de comunica<;ao como 0 ATM (Asynchronous Transfer Mode) que permitem velocidades acima de 155 Mbps A velocidade passa a ser determinada pelos equipamentos que processam as informa<;6es (Clientes/SeNidores) e nao do meio flsico. 2.2 TIPOS DE DISPOSITIVOS DE REDES DE DADOS As redes de dados podem ser compostas par diversos dispositivos de hardware. 2.2.1 Repetidares Sao equipamentos utilizados quando se deseja repelir 0 sinal enviado par um equipamento quando a distancia a ser percorrida e maiar do que 0 recomendado 16 (Exemplo para cabos UTP 100 metros). Ele realiza uma ampliac;ao no sinal ja fraco dando nova forc;a para que chegue ao ponto de destino. FIGURA 1: REPETIDOR - 2006 FONTE: Projeto de Redes 2.2.2 Hubs Sao dispositivos uma LAN. Gom 0 Hub, chamado concentrador). problemas facilitada, utilizados para conectar as conexoes 0 gerenciamento da rede e uma vez que 0 defeito fica isolado hub pode receber varios ativos de rede, atualmente (pode-se fazer FIGURA 2: HUB - 2006 FONTE: os equipamentos da rede sao concentradas a conexao entre hubs aumentando CISCO SYSTEMS. Inc que compo em (por isto tambem favorecido e a soluc;ao no segmento existem de de rede. Gada hubs entre 4 e 48 portas a capacidade final). 17 2.2.3 Bridges (Pontes) Seu trabalho e evitar 0 numero excessivo de colisoes quando urn numero grande de computadores compartilham 0 mesmo cabo. a bridge analisa os endere,os dos pacotes de dados que chegam em cada porta, e transmitem para a outra porta somente quando concluem que a Bridge 0 0 pacote destino esta neste outra porta. e uma ponte entre duas redes separadas, que passam a operar como uma cnica rede. Por exemplo, tem-se LAN da diretoria com a LAN da produ,ao, cada uma com uma rede local, pode-se utilizar bridges para ligar as duas redes. Se for inviavel ligar as duas redes atraves de cabos de rede normais, pode-se usar bridges wireless (sem fios). a tr8lego e estabelecido entre as duas redes, que passam entao a formar uma unica rede. FIGURA 3: EXEMPLODE UTILlZA<;Ao DE BRIDGES - 1995 Elhernet TCPI1P Elhernet TCPIIP FONTE: TopoJogia de Redes 18 2.2.4 Switchs Os switchs uma rede, servem para interligar possuem maior varios computadores desempenho que 0 e equipamentos porque hub de estabelece dinamicamente ligagaes entre as portas, estabelecendo canais independentes que podem operar de forma simultiinea. Cada computador tem a rede a disposig80 ate 100% do tempo. 0 switch opera de forma mais inteligente que 0 hUb. Ele analisa os pacotes de dados que chegam a ele e descobre os enderegos de origem e destino. A partir dar, enviara este pacote apenas para a porta correta. urn dado instante podem existir varias conex6es a internas resultado e que simultaneas. em Este chaveamento inteligente de conexaes contribui para aumentar 0 desempenho total da rede e evitando colisaes de dados. FIGURA 4: Exemplo de Switchs - 2006 FONTE: CISCO SYSTEMS, Inc 19 2.2.5 Roteadores Fazem 0 papel de guarda de transito, garantindo que os pacotes de mensagens sejam dirigidos a enderegos fedes certos na rede. 0 roteador faz a diferentes, que podem inclusive ter conexao entre duas caracterfsticas frsicas e protocol os diferentes. Uma aplicagao muito comum atualmente e a ligag80 entre uma rede local e a Internet. FIGURA 5: Exemplo de Roteadores - 2006 FONTE: CISCOSYSTEMS, Inc 2.3 TIPOS DE TOPOLOGIAS DE REDES DE DADOS A topologia de uma rede depende do projeto das operagoes, da confiabilidade e do seu custo operacional. Ao planejar uma rede, muitos fatores devem ser considerados, mas 0 tipo de participag80 dos nos e um dos mais importantes. A topologia da rede e um nome dado ao arranjo dos cabos usados para interconectar os clientes e servidores. A maneira como eles sao interligados tem 20 algumas implica90es sabre a maneira como a sistema operacional de rede gerencia tanto as clientes quanta a fluxo de informa90es sabre a rede, as topologias mais comuns sao estrela, anel, e barramento. 2.3.1 Estrela Neste tipo de rede, todos as usuarios comunicam-se com um no central. Atraves do n6 central, as usuaries podem comunicar~se entre processadores remotes OUterminais. 0 arranjo em estrela si e com e a melhor escolha 58 0 padrao de comunica9ao da rede for de um conjunto de esta90es secundarias que comunicam-se com 0 no central. As situag6es en de ista mais aconteee sao aquelas em que a no central esta restrito as fun90es de gerente das comunica90es e a opera90es de diagnosticos. o no central pode realizar outras fun90es alem das de chaveamento e processamento normal. Par exemplo: 1. Compatibilizar a velocidade de comunica9ao entre 0 transmissor e a receptor. 2. Se a protocolo dos dispositivos, fonte e destino utilizarem diferentes protocolos, a n6 central pode atuar como urn conversar, permitindo duas redes de fabricantes diferentes se comunicar. No caso de ocorrer falha em uma esta9ao au no elo de liga9ao com a no central, apenas esta esta9ao fica fora de opera9ao. Entretanto, se uma falha ocorrer no no central, todo a sistema pode ficar fora do ar. A solu9ao deste problema seria a redundancia, mas ista acarreta urn aumento consideravel das custos. 21 A expansao de uma rede deste tipo de rede s6 pode ser feita ate um certo limite, imposto pelo n6 central: em termos de capacidade de chaveamento, numero de circuitos concorrentes que podem ser gerenciados e numero de n6s que podem ser servidos. o tempo desempenho obtido numa rede em estrela depende da quantidade de requerido pelo n6 central para processar carga de trafego de conexao, ou seja, e encaminhar mensagens, e da e limitado pela capacidade de processamento do n6 central. 2.3.2 Anel Uma rede em anel consiste de estagoes conectadas atraves de um caminho fechado. Nesta configuragao, muitas estag6es remotas ao anel nao se comunicam diretamente com 0 computador central. Redes em anel sao capazes de transmitir e receber dados em qualquer direqao, mas as configuragoes mais usuais sao unidirecionais, de forma a tornar menos sofisticados os protocolos de comunicagao que asseguram a entrega da mensagem corretamente e em sequencia ao destino. Quando uma mensagem e enviada por um n6, ela entra no anel e circula ate ser retirada pelo n6 destino, ou entao ate voltar ao n6 fonte, dependendo do protocolo empregado. 0 ultimo procedimento e mais desejavel parque permite 0 envio simultaneo de um pacole para multiplas eslagoes. Outra vantagem e a de permitir a determinadas estagoes receber pacotes enviados par qualquer oulra estagao da rede, independentemente de qual seja 0 n6 destino. 22 AS maiores problemas desta topologia sao relativDs a sua pouca tolerancia a falhas. Qualquer que seja 0 conlrole de acesso empregado, ele pode ser perdido por problemas de falha e pode ser diffcil delerminar com certeza se esle conlrole foi perdido ou decidir qual n6 deve recria-Io. Erro de Iransmissao e processamenlo pod em tazer com que uma mensagem continue eternamente a circular no anel. A uliliza,ao de uma esla,ao monilora, conlomar esles problemas. Oulras fungoes desla esla,ao seriam: iniciar 0 anel, enviar pacoles de lesle e diagn6slico e oulras larefas de manulen,ao. A esla,ao monilora pode ser dedicada ou uma oulra que assuma em delerminado lempo essas fungoes. ESla configura,ao requer que cada n6 seja capaz de remover seletivamenle mensagens da rede ou passa-Ias adianle para 0 pr6ximo n6. Nas redes unidirecionais, S8 uma linha entre dais nos cair, todo sistema sai do ar ate que 0 problema seja resolvido. Se a rede for bidirecional, nenhum alivo de rede ficara inacessivel, ja que podenj ser alingido pelo oulro lado. 2.3.3 Barramenlo Nesla configura,ao lodos os n6s (esla,oes) se ligam ao mesmo meio de Iransmissao. 0 barramenlo e geralmenle compartilhado em lempo e frequemcia, permilindo Iransmissao de informa,ao. Nas redes em barramenlo, cada n6 coneclado a barra pode ouvir lodas as informat;6es transmitidas. Esta caracterfstica tacilita as aplicat;oes com mensagens do lipo difusao (para mulliplas esla,oes). Existe uma variedade de mecanismos para 0 controle de aceSSD ao barramenlo pode ser cenlralizado ou descenlralizado. A lecnica adolada para 23 acesso a rede e a multiplexagao no tempo. aceSSD e Em controle centralizado, 0 direito de determinado par uma estat;(ao especial da rede. Em urn ambiente controle descentralizado, a responsabilidade de acesso e distribuida de entre todos os n6s. Rel6gios de prevengao em cada transmissor devem detectar e desconectar 0 n6 que falha no momento da transmissao. o desempenho de um sistema em barramento comum e determinado pelo meio de transmissao, numero de n6s conectados, controle de acesso, tipo de trafego entre outros fatores. 0 tempo de resposta pode ser altamente dependente do protocolo de acesso utilizado. QUADRO 1: COMPARAQAoENTRE TOPOLOGIAS Tipos de Ponto Positivos Pontos Negativos Topologias Topologia Estrela E mais tolerante a falhas Fcicil de instalar usuarios Topologia Anel Monitoramento centralizado Razoavelmente facil de instalar (Token Ring) ~:~~~P~~~~~~~f~~~e as problemas sao dificeis de isolar. Topologia Barramento Simples e fcicil de instalar Requer menos cabos Facil de entender A rede fica mais lenta em periodos de usa intenso. as problemas sao dificeis de isolar. 2.4 TIPOS DE PADROES Custo de Instala~ao maior. Se uma estac;ao para todas param DE TRANSMISsAo EM REDE DE DADOS PARA REDES LOCAlS 2.4.1 Ethernet A rede Ethernet e a mais conhecida dentre as atualmente utilizadas, e esta no mercado ha mais tempo do que as outras tecnologias de rede. A redu,ao dos pre,os e uma relativa alta velocidade de transmissao de dados fomentaram a ampia 24 utiliza<;aoda Ethernet, que pode ser utilizada com topologia barramento (Coaxial) ou Estrela (Par tran<;ado). Neste tipo de rede, cada maquina "escuta" 0 trafego na rede e se nao ouvir nada, eles transmitem as informa<;oes.Se dois clientes transmitirem informa<;oesao mesmo tempo, eles sao alertados sabre a cOlisao, param a transmissao e esperam urn perfodo aleatorio para cada urn antes de tentar novamente, este metodo e conhecido como Carrier Sense Multiple Access with Collision Detection (CSMNCD). Como exemplo, suponha-se se deseje armazenar uma planilha no HD (Hard Disk) de uma outra maquina. Em Ethernet, 0 primeiro passo que sua placa de rede faz e escutar 0 que esta acontecendo no cabo para determinar se, no momento, ha alguem utilizando 0 cabo para transmitir dados. Essa e a parte carrier sense (detec<;aode portadora) do CSMNCD. Se a rede estiver ocupada sua placa continua tentando ate que ela esteja livre. Uma vez que detecte que nao existem dados trafegando entao ela envia a planilha para outra maquina. Em caso de colisao, os dados sao perdidos e cada urn dos envolvidos na colisao aguardam urn perfodo aleatorio para retransmitir na~ ocorrendo perdas para 0 usuario. Dependendo do tipo de hardware utilizado na rede, 0 numero de colisoes crescem a medida que 0 numero de esta<;oesaumentam. Uma forma de evitar as colis6es e a utiliza<;ao de switchs na rede. 2.4.2 Token Ring o metodo de acesso de token ring (passagem de permissao) utiliza um metodo circular para determinar qual esta<;aotern permissao para transmitir. 0 token 25 ring opera em topologia em anel e garante que todas as esta,oes da rede tenham chance de transmitir dados. Ele alcan,a esse objetivo utilizando urn padrao especial de bit conhecido como token ou permissao. Em uma rede token ring, seu computador pacientemente monitora a rede ate que ele veja urn padrao especial de bits denominado permissao. Ao ver a transmissao ele envia urn pacote de dados. Este pacote de dados viaja pelo anel e 0 destinatario recebe na passagem. Quando 0 pacote retornar ao transmissor ele passa 0 token para a pr6xima esta,ao. Este processo se repete infinitamente. Os tempos necessarios sao medidos em fragaes de segundos. 2.5 GERENCIAMENTO DE REDES A area de gerimcia de redes, foi inicialmente impulsionada pela necessidade de monitora,ao e controle dos dispositivos que compoem as redes de comunica,ao. Com esta crescente necessidade de gerenciamento, fez-s8 necessaria que padroes para ferramentas fossem estabelecidos. 2.5.1 SNMP o protocolo SNMP (Simple Network Management Protocol - protocolo simples de gerenciamento de redes) refere-se a urn conjunto de padroes para gerenciamento que inclui urn protocolo, uma especifica,ao de estrutura de dados, e urn conjunto de objetos de dados. Este protocolo hoje ja esta na sua segunda versao oficial, chamada de SNMPv2. E ja existem estudos para 0 desenvolvimento do SNMPv3. Este e 0 protocolo de gerencia adotado como padrao para redes TCP/IP. 26 Pela sua complexidade, e pela lentidao do processo de padronizagao, este sistema de gerenciamento nao e muito popular (Stallings, 1993). o gerenciamento da rede realizado pelo protocolo SNMP, permite que uma ou mais maquinas na rede sejam designadas gerentes da rede. Esta maquina recebe informagoes de todas as outras maquinas da rede, chamadas agentes, e atraves do processamento destas informagoes pode gerenciar loda a rede e detectar facilmente problemas ocorridos. As informagoes coletadas pela maquina gerente eslao armazenadas nas proprias maquinas da rede, em uma base de dados conhecida como Management Information Base necessarias para (MIS). Nesta base de dados eslao gravadas todas as informagoes 0 gerenciamento deste dispositivo, atraves de varia.veis que sao requeridas pela estagao gerente. Entretanto, em uma interligagao de diversas redes locais, pode ser que uma rede local esteja funcionando perfeitamente, mas sem conexao com as outras redes, e, conseqQentemente, sem conexao com a maquina gerente. 0 ideal e implementar em alguma maquina, dentro desla rede local, um protocolo para gerenciamento que permita um trabalho off-line, isla e, que a rede local possa ser gerenciada, ou pelo menDS tenha suas informat;6es de gerenciamento coletadas, mesma que estas informagoes nao sejam enviadas instantaneamente a estagao gerente. 2.5.2 RMON Para promover uma maior e melhor expansao das tecnologias de rede, era necessaria urn padrao de gerenciamento de redes mais sofisticado. Com esta premissa 0 IETF (Internet Engineering Task Force) criou 0 RMON (Remote Network 27 Monitoring MIB) que possui como caracteristicas principais a interoperabilidade independentemente de fabricante; capacidade de fornecer informagoes precisas a respeito das causas de falha no funcionamento normal da rede, assim como da severidade dessa falha; finalmente, 0 novo padrao deveria oferecer ferramentas adequadas para diagnostico da rede. Alem destas caracteristicas, 0 padrao deveria oferecer urn mecanisme pro-ativa para alertar 0 administrador dos eventuais problemas da rede, alem de metodos automaticos capazes de coletar dados a respeito desses problemas. Assim, 0 RMON tornou-se um padrao por volta de 1990. Para ampliar a capacidade do RMON foi criado 0 RMON II, cujo padrao esta disponivel nas RFCs (Request For Coments) 1757 e 1531 e apresentam padroes para redes Ethernet e Token Ring. 2.5.3 Sistemas de gerenciamento OSI o gerenciamento no modelo OSI (Open Systems Interconnect) da ISO (International Sorganization for Standartization) baseia-se na teoria da orientagao a objetos. 0 sistema representa os recursos gerenciados atraves de entidades logicas chamadas de objetos gerenciados. Ao desenvolver uma aplicagao de gerenciamento, usa-se processos distribuidos conhecidos como gerentes (que gerenciam a rede) e agentes (os que realizam as agoes). o CMIP (Common Management Information Protoco~ e 0 protocolo de gerencia do modelo OS!. Trata-se de um protocolo poderoso, robusto e abrangente (em relagao ao SNMP), que ja foi concebido com 0 objetivo de adequar-se il 28 primitivas do CMIS - Common Management Information Service) permitem a manipulagao de objelos (criagao, remogao), a leilura e escrila de variaveis e a notifica~aode eventos. o Servigo de Informagao de Gerenciamenlo sao os servigos preslados a camada de aplicagao. Eo orienlado a conexao, necessilando de um canal virtual (uma associagao) para troca de informagoes primilivas oferecidas para as aplicagoes, manipular objelos. Para a manipulagao de dados gerenciais, al8m da MIS, CMIS e do CMIP lamb8m sao definidos recursos adicionais que permitem selecionar 0 grupo de objetos sobre os quais se aplica uma delerminada operagao. 0 scoping, como 8 chamado este recurso, permite selecionar uma sub-arvore da hierarquia de objetos sobre os quais se realizara uma unica operagao. Por meio dos recursos de filtro, oulra facilidade do CMIP, 8 possivel definir um conjunlo de tesles aplicaveis a um grupo de inslancias de objelos (selegao por predicados), que fora anteriormenle selecionado alrav8s do seoping. Assim sendo, 8 possivel especificar um grupo de objetos sobre a qual se desenrolara uma operagao de gerenciamento. Na arquilelura proposta pela ISO, cada camada do modelo OSI 8 associada a um LME (Layer Management Entity) que pode interagir com a mesma para fins de gerenciamento. As LMEs sao inlerligadas e coordenadas localmente por um SMAE (System Management Application Entity) que oferece um conjunlo de primilivas para as aplicagoes de gerenciamento CMIS e se comunica com outras SMAEs atrav8s do CMIP. As primitivas oferecidas pelo CMIS sao utilizadas por MIS-users. Um MISuser pode desempenhar 0 papel de gerenle, agente ou ambos, permitindo a construgao de uma hierarquia de gerenles, distribuindo a responsabilidade da 29 ger{mcia por varios pontos, possibilitando, inclusive a redugao do trafego de mensagens entre agentes/gerente. 2.6 NECESSIDADES DO GERENCIAMENTO DE REDES Por menor e mais simples que seja urna rede de computadores, precisa ser gerenciada, a fim de garantir, aos seus usuarios, a disponibilidade de servigos a um nivel de desempenho aceitavel. A medida que a rede cresce, aumenta a complexidade de seu gerenciamento, forgando a adogao de ferramentas automatizadas para a sua monitoragao e controle. A adogao de um software de gerenciamento nao resolve todos os problemas da pessoa responsavel pela administragao da rede. Geralmente 0 usuario de um software de gerenciamento espera muito dele e, consequentemente, fica frustrado quanta aos resultados que obtem. Por outro lado, esses mesmos softwares quase sempre sao subMutilizados, isto 8, possuem inumeras caracteristicas inexploradas au utilizadas conhece-Io de modo poueD eficiente. multo bern e visualizar Para gerenciar claramente urn recurso, e necessaria 0 que este recurSQ representa no contexte da rede. o investimento em um software de gerenciamento pode ser justificado pelos seguintes fatores: As redes e recursos de computagao distribuidos estao se tornando vitais para a maiaria das organizag6es. S8m urn controle efetivD, as recursos nao proporcionam 0 retorno que a corporagao requer. 30 a continuo interfaces, crescimento protocolos de controle sobre da rede em termos e fornecedores usuarios, de componentes, arnea<;arn 0 gerenciamento com perda que esta conectado na rede e como as recursos estao 0 sendo utilizados. as usuarios a mesma esperam uma melhoria qualidade), quando dos servi<;os oferecidos novos recursos (ou no minimo, sao adicionados ou quando sao distribuidos. as recursos grupos computacionais de aplica<;6es e as informa<;6es de usuarios nas areas de desempenho, da organiza<;ao com diferentes disponibilidade geram necessidades e seguran<;a. varios de suporte a gerente da rede deve atribuir e controlar recursos para balancear estas varias necessidades. A medida que um recurso fica a sua necessidade garantir fica mais importante de disponibilidade. para a organiza<;ao, a sistema maior de gerenciamento deve esta disponibilidade. A utiliza<;ao dos recursos deve ser monitorada e controlada para garantir que as necessidades dos usuarios sejam satisfeitas a urn custo razoavel. Alem desta visao qualitativa, processo de gerenciamento foi especifica<;ao de Gerenciamento pela dos maioria descrever fornecedores as necessidades Contabiliza<;ao uma separa<;ao apresentada de Sistemas ISO, de necessidades como parte OSI. Esta divisao funcional de sistemas de gerenciamento: funcional pela de gerenciamento Falhas, de Desempenho, de no sua foi adotada redes para Configuragao, e Seguran<;a. Gerenciamento Gerenciamento componentes, de Falhas: Detec<;ao, corre<;ao e prevehgao de Desempenho: coletar informa<;6es Redimensionarnento estatisticas; de falhas; da rede e de seus 31 Gerenciamento de Contabiliza,ao: Verifica,ao da aloca,ao de recursos e determinar os custos envolvidos, determinar limites de uso e custos; Gerenciamento de Configura,ao: Visualiza,ao e alteragao da configura,ao da rede e seus componentes, Gerenciar 0 cicio de vida do sistema e sua configura,ao associada; Gerenciamento de Seguran,a: Protegao contra ataques aos componentes da rede, gerenciar os mecanismos e procedimentos que proporcionam a protegao aos recursos da rede, garantir a manuten,ao da politica de seguran,a. 2.7 HISTORICO DO GERENCIAMENTO DE REDES Quando em 1986 reuniu-se, pela primeira vez, 0 Grupo de Trabalho sobre gerenciamento de Redes do Comite T8cnico em Comunica,ao de dados IFIP (International Federation for Information Procesing) havia apenas 0 consenso sobre a necessidade de gerenciamento. Cerca de 20 pessoas reunidas em Dallas, provenientes de diversos parses, sequer concordavam sobre 0 escapo do gerenciamento de rede. Para alguns dos representantes, incorporasse apenas as tres camadas inferiores da arquitetura OSI (pais era com 0 que estavam acostumados a trabalhar), para os outros 0 gerenciamento de redes devia englobar as sete camadas. Percebia-se claramente que cada fornecedor tinha construfdo uma arquitetura proprietaria de gerenciamento para seus produtos e tinha dificuldade de impingi-Ia aos clientes, ao lado de outros fornecedores. Ja se falava na oportunidade sobre 0 gerenciamento OSI, embora muitos lenham encarado com certo ar de duvida aquela alternativa. 32 A abordagem cl;,ssica para integrar 0 gerenciamento de redes era baseada em arquitetura proprietarias. Para que pudessem funcionar como elemento de integra,ao, os arquitetos de tais solu,oes incorporaram nelas uma abertura para agregar a informa,ao de gerenciamento de sistema de outros fornecedores. A IBM®, por exemplo, com 0 conceito de focal point abriu esta porta para integrar outros sistemas de gerenciamento ao Netview, principalmente por interesse proprio, uma vez que a aquisi,ao da RDLM (fabricante de PABX) levou a esta necessidade. Modulos para traduzir 0 fluxo de informa,ao de gerenciamento de um esquema para outros tinham de ser constituidos e podiam ser implantados em varios pontos. Poderia ser um servidor de rede Novell®, com um mOdulo interne capaz de gerar os "vetores de alerta" esperados pelo Netview. Como segunda op,ao poderia ser a solu,ao para integrar 0 gerenciamento de um PABX digital em que a tradu,ao seria feita em um PC que receberia as mensagens de gerenciamento de um lado e as traduziria, quando passivel, para 0 Dutro. A terceira abordagem seria para 0 caso em que um roteador fosse 0 diagnostico gerenciado e que utilizasse um protocolo padrao de fato na industria, tal como 0 SNMP, com a conversao feita internamente no computador gerenciador. Dentro dos problemas decorrentes desta solu,ao, pode-se destacar principalmente a limita,ao imposta pelo fato de somente usar op,oes gerenciamento (dados recebidos e comandos veiculaveis) que tinham similar na arquitetura proprietaria do fornecedor do computador gerenciador. Op,oes de intera,ao propiciadas aproveitadas pelos dispositivos gerenciados podiam nao ser simplesmente pela falla de condi,oes de mapea-Ias para uma forma passivel de reconhecimento pelo computador gerenciador. Em decorn§ncia, os dispositivos gerenciados providos pelo mesmo fornecedor do computador gerenciador 33 "pareciam" mais facilmente gerenciaveis. Para naD parecerem diminuidos sob este prisma, muitos fornecedores nao S8 mostravam entusiasmados em cooperar para tamar seus produtos gerenci8.veis par urn computador gerenciador de Dutro fabricante. Esta abordagem foi adotada por alguns fornecedores no mercado, como a IBM® e a DEC®, mas cada vez mais crescla 0 deseja per urn sistema de gerenciamento independente de fornecedor que pudesse rodar em uma maquina dedicada, de modo a nao sobrecarregar nem prejudicar 0 atendimento dos servigos normais a serem executados no mainframe. A AT&T® tambem entrou no cenario, definindo uma arquitetura de gerenciamento e se propondo a gerenciar as redes de seus clientes de telecomunicagoes. Criando 0 impasse, uma solug8.oalternativa teria de ser buscada, implicando a agregag8.ode esforgos que levassem a uma solug8.omais universal e padronizada. Obviamente, tal solug8.o deveria englobar os servigos de gerenciamento mais importantes e relevantes, al9m de formalizar a interag8.o entre os dispositivos gerenciados e os gerenciadores. A ISO tomou a bandeira e 0 esquema basico da arquitetura de gerenciamento de rede foi adicionado ao modelo de referencia ISOIOSI em 1989. A colaborag8.o entre a ISO/IEC (international Organization for Standardization / International Eletrotechnical Committee) resultou na serie de documentos X.700, cujo objetivo maior 9 criar condigaes para 0 desenvolvimento de produtos de gerenciamento de redes de computadores e sistema de comunicagaes heterogeneos. Porem, 0 embate das forgas dominantes no cenario internacional dificultou a estabilizag8.odos detalhes para a operacionalizagao do modelo de gerenciamento. 34 Anos se passaram sem que os documentos atingissem estilgio do padrao ISO 0 internacional. As implantagoes, baseadas em interpretagoes da documentagao disponivel, comegaram a aparecer e, em 1989, percebendo a necessidade de acordos que assegurassem a interoperabilidade das implementagoes, as fornecedores comegararn a reunir-se em associagoes como a ISO/NM F6rurn, para buscar um acordo que viabilizasse a definigao de um conjunto de opgoes de implantagao capaz de assegurar a interoperabilidade dos sistemas de gerenciamento. Dutro grupo foi criado sob a tutela do NIST (National Institute of Standards and Technology) dos Estados Unidos para atender as necessidades do governo americano, que jil havia determinado, atraves de seu documento GOSIP (Government OSI Profile), que as solugoes de redes a serem adquiridas deveriam atender as recomendagoes ISO/lEG. Este trabalho resultou no GNMP (Government Network Management Profile), cuja versao 1, de 30 de julho de 1992, constitui a referencia que tadas as agencias do governo federal dos Estados Unidos devem usar ao adquirir fungoes e selVigos de gerenciamento de rede. D primeiro dos protocolos de gerencia de rede foi 0 SGMP (Simple Gateway Monitoring protocon que surgiu em novembro 1987. Entretanto, 0 a uma monitora<;ao de gateways. A necessidade crescente de SGMP era restrito ferramenta de gerenciamento de rede mais gent"rica fez emergirem mais algumas abordagens: High-Level Entity Management System - HEMS - generalizagao do HMP Host Management Protocol; SNMP - Simple Network Management Protocol - um melhoramento do SGMP; 35 CMOT - (CMIP over TCP/IP) uma tentativa de incorporar 0 maximo possivel o protocolo (CMIP), servigos e estrutura de base de dados que estava sendo padronizada pela ISO para gerenciamento de redes. No inicio de 1988 a lAB (internet Architecture Board) revisou os protocolos e escolheu 0 SNMP como uma sOlugao de curto prazo e 0 CMOT como solugao de longo prazo para 0 gerenciamento de redes. 0 sentimento era que, em urn periodo de tempo razoavel, as instalagoes migrariam do TCP para pratocolos baseados em OSI. Entretanlo, como a padronizagao do gerenciamento baseado no modelo OSI apresentava muita complexidade de implementagao e 0 SNMP, devido a simplicidade, foi amplamente implementado nos produtos comerciais, SNMP 0 sua tornou-se urn padrao de fato. Posteriormente, pela existemcia de lacunas funcionais (devido exatamente a simplicidade do SNMP), foram definidas novas versoes do pratocolo SNMP chamadas de SNMPv2 e SNMPv3, e 0 SNMP original ficou conhecido como SNMPv1. A primeira versao da arquitetura de gerenciamenlo SNMP foi definida no RFC 1157 de maio de 1990. o minimizar RFC 1157 define ainda tres objelivos a serem alcangados pelo SNMP: 0 numera e complexidade das fungoes de gerenciamento, ser flexivel 0 suficiente para permitir expansoes futuras e ser independente da arquitetura e mecanisme dos dispositivos gerenciados. A definigao das informag6es de gerenciamento requer nao apenas profunda conhecimento gerenciamento. da area especffica em foco, mas tambem do modele de 36 2.8 SOFTAWARES DE GERENCIAMENTO DE REDES 2.8.1 HP Open View Plataforma SNMP, eontem programas exeeutaveis que suportam as chamadas do Kit do Desenvolvedor SNMP. 0 HP Open View Windows, enderego IP automaticamente e monta automatiGamente e cria um eXeGU980 SNMP, manuseio mapa 0 (isto e, descobre urn nodo de rede layout incluindo-o). de traps e uma MIS descobre 0 Utiliza tamMm, biblioteGa de acessivel ao usuario final. A Plataforma SNMP descobre e monitora dinamicamente padroes como: enderegamento IP, SNMP MIS-II e dispositivos SNMP. Os produtos de gereneiamento SNMP proporcionam um ambiente de programagao estavel e interoperabilidade com outros sistemas baseados em padroes. 2.8.2 NetView E uma ferramenta de gerenciamento de sistema e de rede que proporciona fungoes de configuragao, falha e desempenho. Possu; uma plataforma de gereneiamento de rede aberto que habilita a integragao de aplieagoes SNMP (Simple Network Management protOGOn e CMIP (Common Management Information protOGOn· A plataforma NetView foi desenvolvida para varios ambientes operaeionais : AIX, VMS, Sun Solaris, AS/400. Este trabalho foi baseado na utilizagao do NetView no sistema operaeional AIX. 37 2.8.3 Spectrum E uma plataforma de gerenciamento que fomece independencia de protocolo e gerenciamento de dispositivos diferentes fabricantes para a integra<;ao completa de sistemas para grandes empresas. Administra redes ativamente, localiza e corrige problemas, e informa aos gerentes da rede sobre mudan<;as de status. Diferente de outras plataformas, SPECTRUM realmente nao tem problemas para administrar uma rede. Atraves do usa da Tecnologia de Modela<;ao Indutiva (IMT). uma forma de inteligencia artificial, SPECTRUM e capaz de resolver problemas sobre suas proprias solu<;6es iniciadas. A IMT permite ao SPECTRUM criar um modele de cada entidade na rede, incluindo cabos fisicos, aparelhos de redes, topologias e aplica<;6es. Cada modelo e inteligente, ate mesmo se a entidade que esta representada nao e inteligente. 2.8.4 SunNet E Manager uma cole<;80 de ferramentas para gerenciamento de redes. Estas ferramentas provem uma plataforma comum como base para todas as fun<;6es de gerencia numa arquitetura uniforme, al8m de disponibilizar uma interface de uSutlrio. A arquitetura SunNet Manager ainda prove um sistema de gerenciamento de redes que e independente dos protocolos inferiores. Os servi<;os oferecidos nao fazem quaisquer suposi<;6es sobre os protocolos especificos de rede (TCP/IP oU UDP/IP) usados para suprir as fun<;6esde transporte de dados. II 38 A versao 1.0 do SunNet Network Computing) e baseada no ambiente ONC (Open Manager da Sun Microsystems, mas ja existe a versao 2.2.2 conhecida por Solstice Sun Net Manager. 3 METODOLOGIA 3.1 LlNGUAGEM DE PROGRAMAQAO Como base para a desenvolvimento deste prototipo foi utilizada a linguagem de programa9ao Delphi na versao 7. Esta linguagem foi escolhida por ser de alto nivel e possuir as recursos RAD (Rapid Application Development) - Desenvolvimento Rapido de Aplicativo, utilizando a linguagem Pascal como padrao, e tendo diversas comunidades de auxilio e principalmente por utilizar conexoes com diversos banco de dados. Uma linguagem que gera aplicativos executaveis rapidos e com tamanhos reduzidos, comparados com outras linguagens. Neste prototipo tambem foi utilizado 0 banco de dados Interbase, devido sua interopera9ao com 0 Delphi. A distribui9ao deste banco de dados e gratuita. Eo utilizado 0 FireBird, um SGBD (Sistema Gerenciador de Banco de Dados ) que e um produta de C6digo Livre desenvolvido sobre licensa Interbase o FireBird License. oferece uma excelente solu98.0 como sistema gerenciador de bancos de dados de alta performance. Alem disso 0 FireBird Ihe oferece excelente concorrencia de acesso, alta performance, e uma poderosa linguagem com suporte a stored procedures e triggers de bancos. 39 3.2 PRE-REQUISITOS Para se utilizar 0 prot6tipo e necessario a instala,B.o das bibliotecas PING (Anexo 1) e ICMP (Anexo 2). desenvolvidas por Fran,ois Piette e disponibilizada gratuitamente sem qualquer restri,B.o de uso. Estas duas bibliotecas foram a base para 0 desenvolvimento deste prot6tipo. 3.3 ESTRUTURA DE FUNCIONAMENTO DO PROTOTIPO FIGURA 6: Estrutura Geral do Prot6tipo o prot6tipo, atraves de uma rede TCP/IP, executa testes dos acessos ate os ativos de rede, atraves do envio de um pedido de eco ICMP e da espera por uma resposta. 40 3.4 PRINCiPIO DE FUNCIONAMENTO DO PROTOTIPO o prot6tipo esta baseado no comando ping do sistema operacional. 0 mesmo envia para os ativos de rede de destino um pedido de resposta para suas requisigoes, as quais sao mostradas na tela e armazenadas em banco de dados para futuras analises. 0 prot6tipo continuara a verificagao ate a interrupgao pelo usuario. Obtendo au nao as respostas solicitadas 0 prot6tipo armazenara as resultados no banco de dados. Este prot6tipo permite realizar a verificagao especffica de um ativo de rede ou de um grupo. Os resultados dos testes podem ser visualizados e impressos selecionando um ativo de rede ou todos ativos de rede por perfodo. 3.5 MANUAL DO USUARIO o Programa pingtst.exe e um prot6tipo desenvolvido em Delphi, e utHiza 0 banco de dados Interbase. E necessario que 0 computador esteja ligado em algum ativo de rede (modem, Hub, Switch, Roteador ou outra estagao de trabalho). Configurag6es Mfnimas: Sistema Operacional: Windows (2000 e XP) Estagao: Pentium 233 ou superior Mem6ria RAM: 128MB Rede: TCPjl P 41 Cadastro de Grupos Menu Cadastro / Grupos IrijlHi"ffltiij.;;;, 0' Clique no + para adicionar um registro em branco, C6digo Nome do Grupo Descrigao o campos C6digo e Nome do Grupo sao obrigat6rios Para confirmar clique no Para Cancelar clique )( v' depois preencha as campos: 42 Cadastre Ative de Rede Menu Cadastre / Alive de Rede Cooastro c&:!. Computador "Co:.:' do.:' G:.:'u:::.po'- --, I!. p :::oJ r.IT~"OO~---r.1'~~~,l~~~,O~,'~93~---' 1 Host Escola lP Descricao 11omputadc:x Secretalia Athoo 2.4 GH I de Planeiamento· SEMGE Departamento de Planeiamento Oro;:ament"rio' DEPlO 1 List" 1?'SCAICAO ComputadOi Atnon 2.4 GH IISeaetalia de Plam Clique no + para adicionar um regislro em branco, depois C6digo Grupo que esle Alivo de rede fara parte Nome do Alivo de Rede (Host) e Descri9ao Todos campos acima sao obrigat6rios II Para confirmar clique no ~ Para Cancelar clique x preencha os campos: 43 Teslando urn Alivo de Rede Verificar se esta ativo ~adastro Eerramentas I G,...., I I c••••.•"" rlAli"d,rede I.L' 0 item Computador ~ _ _ ~' ~ Eo:; I Resultados 1P:192.168.0.193 111P:192.168.Ul93 192.168.0.2 II~P: ! I I I Tamanhodo pacole: Tamanhooopacote: THI'IaIlOOdo pacote: I:~:~K~:~:~ .'nie$$i~~amodopacote: IP:1Ul.1 I TarMnhodopacote: lP:ln.17.0.4 I T~dopacole: 1P:172.17.0.4 I Tamamodopacole: Preencher 64 64 64 I I 0 0 64 64 I I I Oms Oms Oms 3ms Jms 101m I Oms a lacuna em branco Ativo de Rede com: Enderego de rede do ativo de rede ou Nome do ativo de rede. Teslando a disponibilidade do alivo de rede. Clicar no botao Testar. o programa ficara teslando se 0 alivo de rede esla disponfvel em banco de dados os resultados. Para Parar devera obrigatoriamente II clicar no botao Parar. ou nao e registrando 44 Testando um Grupo Verificar a disponibilidade Escolher Testando dos ativos de rede cadastrados no grupo escolhido 0 grupo a ser testado a disponibilidade do ativo de rede no grupo. Clicar no botao Testar. o programa registrando ficar" testando se os ativos de rede estao disponfveis em banco de dados os resultados. Para Parar devera obrigatoriamente clicar no botao Parar. ou nao e 45 Listando os resultados por Grupo Podera selecionar as opgoes conforme figura a seguir c~lIstrolFerri!lmentas ~ad~AtivQde,ede: I Sair Resukados -- ~- -- Op,ao Ativo de rede II 46 Apes colocar 0 enderego do alivo de rede e clicar no botiio Imprimir oblera um relaterio em tela que poder" ser impresso. Relatorlo de Disponlbilidade do Atlvo de Rede 12,00 !2.ao 0,00 H•• Oatl Rupostll. 192.168.0.193 192.168.0.193 192.1611(1.193 192.168.0.193 l1fl1nOOS 16:15:35 111111200616:15:35 192.168,0.1113 11111/200619:01:51 11/11120011 18:01:51 111111200618:01:53 111111200618.01:53 11/111200& 19.01:55 1111112006 18.01:55 o o o o o o o o o o o o 192166,0.193 192.168.0.193 192.168.0.193 192.168.0.193 192.168.0.193 192.169.0193 192.166.0.193 11111/200615:15:37 l1111n006 16:15:37 ',/11!200615:25:19 11/!WOOS 15:25:19 Opgao Periodo 't! Relatorlo 1\ de Disponibilidade dos IP por periodo 47 Ap6s seleeionar 0 periodo que deseja-se verifiear cliear no batao Imprimir e tera um relat6rio das disponibilidades de todos os ativos de rede testados no periodo. Disponlbilidade dos Ativos de Rede del111112006a 11/11/2006 H•• 0 ••.• RespOita 192.168.0.193 111111200616.15:35 11111(2006 16:15:35 0 0 0 0 0 0 192.169,0.1113 '92.166,0.193 192.168.0.193 192.168.0.2 192.1BB,O.2 10.1.1.1 1111112006 16:15:31 111111200616:15:37 ll111f2006 16:15:46 111111200618:15:46 l1111f200ti 16:15:58 10.1.1.' 10.1.1.1 10.1.1.1 10.1.1.' 1011.1 111111200618:1556 l111Jnllll6 16:15:58 1111112006 16:15:59 11111120rn; 16:16:00 SRY:ms 11111/2006 18:1617 l1f11120M 16:16:17 11111(2006 16,16:19 111111200619:0151 1111112006 19:01'51 1111112006 18:01:53 11111120(}8 19:01.53 1111112006 18:01:55 SRV-lHB SRY-1RIB 192.168,0.193 192.168.0.193 1112.168.0.193 192.168.0.193 192.168.0.193 1111112006 16:16.00 4194324 ,, ,, ,, 4194324 0 0 0 0 0 0 Ap6s seleeionar a periodo que e desejar eliminar estas informa,Des podera cliear no batao Apagar e sera eliminado estas informa,Des do banco de dados com a mensagem a seguir no final da opera,ao. x Dados apaQad05 com sucesso. 48 3.6 MANUAL Executar 0 arquivo DE INSTALACAO pingtst.exe e pressionar em Next (Pr6ximo) Welcome to the InstallShield Wizard for Prot6tipo Ping The InstaiIShield(R) Wizard wil instan ProtOtipo Ping 00 complter. TOContinUB, dick Next. YOIX WARNING: This program is protected by copyright law and international treaties. Selecionar -:. , a oP9ao Typical (Tipica) e pressionar em Next . Setup Type Choose the setup type that best suits YOlJ' needs. P1e~e select a setup type. r.lfii»~ tfi r features !MIl be installed. ..m the most disk Minimum required features will be lnstaUed. (u!tom t@ Choose ~Ich progrllm features you want Instliited o!Ind where they wiUbe Installed. Recommended for ad ..•• anced users. !rY..taI15hleld-----:--"- __ :;;;--;:~___;==::::=;_;:-----___;_ < §.o!ICk l\ (Requires space.) t:1inimal ~ r An prOf7am Next> I- C.!Incel 49 Pressionar em Finish (Finalizar) para termino da instala"ao InstaliShield Wizard Completed Set~ has finished Installing Prot6tipo Pi1g. Some program files might have been updi!lted purchased your copy of Prototipo PiI1l;l. since you Your Internet connection can be used to make sure that you have the I.!Itest updates. :t.es, check for program lJll(kItes (Recorrmended) .!Ifter the setup completes. Cilnctil Executar a aplicativo instalador do Interbase 6.0 ib_wi_os_020204.exe em Next This instaUlltion prowam will installlnterBase 6.0. button to stalt the instaUation You can preu the Cancel button now if you do not want to install JntelBase Pren the Next 6.0 at this time, e pressionar 50 Pressionar em f Agree (Eu Concordo) Use of Inter8ase 6.0 isreslricled by the terms of the InterBase Public License. If you agree with tnese lerms. select " Agree" to continue installing. INTERBASE PUBLIC LICENSE VersionlO 1. Defnitions. 1.0.1. ''Commercial Use" metlns distribution or otherwise making the Covered Code available to a third party. , .1. "Contributor" means each entity that cleates or conllibul:es to the aeation of Mod{~ions. , .2. "Coniributo/ Version; means the combination of the Original Code, Plior MociflCations used by a CoobiblAOI. and Ihe Modifications made by that particular Contributor. 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Mod"lficatiom, in each case inducing portions thereol, 1.4. "Electronic Distribution Mechanism" means a mechanism Pressionar em Next get1efelly accepted para continuar a instalac;ao Select Destination Please ..:.Jl in the softwere Folder select the folder where lnterB05Se 6.0 tiles ale to be installed. ''Free Disk Space Aftellnst~II" is based on your current selection of lies to instal A nega~ .•• e numbef indicates there is not enough disk space to instaU the application specilied drive. <~ack ~ thaI to the 51 Pressionar em Next para continuar a instalal1ao Select Components Choose which components to install. P' InterB~se SelVer lor Windows 5053k 1249k 852k 2159k 52Sk Ok 2421 k Pressionar em Next para continuar a instalagao ModifY Start Options P' Add InterBase shortcuts to Start Menu P' Start IntelBase Server alter installation P' StarllntelBase when computer rest~lls <~8ck~~ \ \ 52 Pressionar em Next para continuar a instalagao Ready to Install! You are now ready to install lnterBase 6.0. Press the Next button to begin the installation button to reenier the installation information. 7% Cancel II 01 the Back 53 Pressionar em Finish (Finalizar) para termino da instalagao Installation Completed! The in;tell.ation oIlnterBo!Ise has been successfully completed Press the Finish button 10 finish the imlalalion. Selecione no botao do Menu Iniciar I Programas I interbase 6.0 I ibconsole lOobJectd.ted p. 54 Selecione con>Ol<> InterBase \/low s..rv.. 0 •• _ I Register Servers •• 10010 W'roQoW< J~()"I"'"'I,1."'· ·::-riJ· Help ~_J_R"""II>Jio!ll.j.".tAe"a ••~dJ ~. ;;;::.~.-,~ ~,- Selecione escreva Name a opg8.0 Local Server Ping e selecione (Nome masterkey do Usuario) (minusculo) (Servidor 0 valor SYSDBA e pressione SerVeflnfounalion r. !,ocalServer r, BemoteServer r;;; .s.~e A~a~Information L"OiO,rn".m'<i"o f JJ.ser Name: ISYSDBA E/!!Iss.word: "••"'••"'."""' ••------- Local). no Campo a opg8.0 Save Alias Information. e no campo OK para continuar Description (Descrig8.o) Preencher no campo Password (senha) a instalag8.o. User 0 valor 55 Pressionar duas vezes Local Server 11f'J"f'J"11t 'Ii I~,'" . Serao mostradas s-f}:J ~o ••••• · OP90es apos pressionar Local Server InlelgeleSer~ert e·~ LOC4ISetvet !_~ Oellll: ••. n~ ~-fied-uP Ll!)SerV!llLog L~Ulet, L090Ut lOQ!U!romlheturenitervet Ule.S«tri)o M~lnle.e6IeU.et. Propertiltl VoewServerprapeltie. 56 Selecione Databases / Register No campo File (arquivo) preencha campo Alias Name preencha Information. Preencher o valor masterkey pressione com no campo (minusculo) OK para continuar com 0 valor C:\Projeto 0 valor PING.GDBe User Name 0 valor SYSDBA, e no campo Default a instalagao f<lo: IC:\Proi"to '" Ping\Ping\PING_GD8 ,S.••v" A~•• * Inlormel>on Login InrOfmolion jSYSDBA Defovlt Ch"""cte, ~ ••t Ping\PING\PING.GDB, selecione -" Character no a opgao Save Alias no campo Set 0 valor Password ASCII e 57 Pressionar duas vezes DataBases ap6s pressionar Iii 1!.!3ftM 1;.01'1001&:lie•• ~o, Io!o,.w- 1001< !tlh~ow>·.1j6Ip duas vezes PING.GDB M*E3 ~J,t, ••· U~rI"liI ~r~::ISs";:: EH~~ I~HI~' DS.o!>"o••, I 8'fePlNG_GOB f"o~ ••• I' an Tobie. (-ceQ v __ I t,.,SI"'edP'o<:od",,,' ··.. fx I I ---ill ,···e BlobFilte,. L__'tJRoIeo Sno.-dolob<!.epropertie. D;';pl.'>yd",,,b,,.,,slati.lic. Shutdown the dol"b"se Sweep T,,,no'tClion Recove,y PeoiOlm"dolabe." •••• ""II Recover ~mbo I'an'.-clion. View Dat ••b", ••Mel"~,, E.,ern<olF...-.clicn • ...~Gen"'''lors Except"", ! Properti". DropOo'obl> ••• D'op'h"c •.•• '"nt<!olob" ••• eeckupeninlerB•• ,edS"b",,, Vie", a bt 01u,,,rt cunently co....,.,"'edtothe.e'''''' ~B"ckup ::® ~:::Log Pressionar duas vezes Tables, sera mostrado dados ja esta instalado as tabelas utilizadas. 0 banco de 58 Pressionar duas vezes 0 arquivo Firebird_DDBe _'.2.0.69-Win32.exe e pressionar em Next para continuar a instalagao. Welcome to the Firebird Driver Setup Wizard OOBe Tl'is will install Firebird DOBe Drivel 1.2.0.69 onyour II is reconwnended continuing. that you dose al othel' applications Click Next to continue, computer. before 01 C-'lncel to exit Setup Marcar a opgao I accept the agreement e pressionar Next para continuar a instalagao license Agreement Please re~d Please read the foUowing License Agreement. agreement the following before important continuing information before continuing. You must i!lccept the terms of thi$ with the instolfotion. Initial Developer's PUBLIC LICENSE Version 1.0 1. Definitions 1.0 "Commcrci.!ll Use" means disliibulion or otherwise makng Code i!lvl!lai!lble to a third party. ,., "Contributor" rnMns each entity that crci!ltes or contributes cre!!ltionof Modilico!Itions. r- [Ci~£@'~~i~;~~~~ r 1£10I"lOl: ~ept the ~reemenl the Covered to the 59 Pressionar em Next para continuar a instala<;ao. Information Please read the /oDowing important. informo!ltion before continuing When you are ready to cont.inue with Setup, click Next. The IBPhoenix Firebird DDSC Driver Installation The inslaUe. p!'esent.s 3 installation options: o Developer Install o Deployment Install o Documentation InstalJ General Noles on instaning the Driver ODBC Drivers live in the WINDOWS System32 «syS) I directory. When the insto!llierprompts you to choose an insto!lllation directory it is really asking you where you W.!Jnt the document.o!Ition installed. Pressionar em Next para continuar a instala<;ao. Select Destination Location Whele snould Firebild DOBe Driver be instaled? D Setup will install Firebird OOBe Driver inl:o the following folder. To continue. cick Nexllf you woud ~e to select a different folder. click Browse. At leo!ld.0.2 MB of flee disk space is reqLired II ..::J 60 Pressionar em Next para continuar a instala9ao. Select Components Which components should be instaned7 Select the components you Wo!Intto insto!ln;clear the components install C~ck NeKt when you are leady to continue. Itmbfti#[email protected]!m you do not Wo!Intto IIntfflitilififflitfflfflMi,', I I.ibiui. ii!:::::J <!!aCk~~ Pressionar em Next para continuar a instala9aO. Select Stalt Menu Foldel Where should Setup place the pro!J'o!IIT1'smortcuts? ~ 'Ulli Setup will aeale To continue. lne program's shortcuts., click NeHl 1/you would ike to ;elect the !olewing SIMI Menu !oIder. 011 direren! foldel, click BrowsCl. 61 Pressionar em Install para continuar a instalac;ao. Ready 10 Inslall Setup is now ready to begin installing Fifebird OOSC Driver on your computer. Click Insl.,)1 to conlinue change any settings. with Ihe installalion, or click Back if you went 10 review 01 Deslinationlocation: C:\Arquivos de progr~mas\FifebiJd\Fisebifd_DDSe Setup type: Developer instan· register driver in System Oil. Instan document~tion S elected components: Instaldrivetto<s~) Documentation in Gll¥! and HTML format Start Menulolder: F"ebird\Filebird Pressionar em Next ODSe Driver para continuar a instalac;ao. Inlormation Please read the foUowing important infO/maHon before continuing When you are ready to continue with Setup, dick Next. ~ilebird DOSC Driver v1.2.0 Readme (\IIin32) o What's new olnstaDaiion oConfigUialion o Known Issues o Feedback What's New Welcome to the latest release 01 the Firebird oose drivel. This release sees many significant advances in !he driVE!!".Notable changes afe: to progr~m .. 62 Pressionar em Finish para termino da instalagao. ~m.~mm3m=-"aE~========-r~~ Completing the Firebird ODBC Driver Setup Wizard Setup h.!l$ finished installing Firebird DOBe Driver onyout computet. The appli~tion may be I!lunched by selecting the installed icons. Click Finish to eMit Setup. <.6.ack ~ 63 3.7 DFD - DIAGRAM A DE FLUXO DE DADOS Resultados do Teste 3.8 DER - DIAGRAMA DE ENTIDADE I TbHistorico E RELACIONAMENTO cscri<;i'io p II 64 4 TESTES Apos 0 desenvolvimento do prototipo, de rede e grupo, bern como a visualizagao Na opgao ativo de rede 0 teste realizou-se testes nas opg6es de ativo dos relatoriosgerados, e executado utilizando urn enderego IP ou seu "nome". Na opgao grupo, Para os testes cadastrou-se Ap6s geragao a realizou-se testes com 30 ativos de redes cadastrados, alivos de redes utilizando realjza~ao dos testes, verificou-se enderegos IP e "nomes", 0 correto funcionamento na dos relatorios, Em todos os testes obteve-se do prototipo, 0 comportamento e os resultados esperados 65 5 CONCLUSAO Durante 0 desenvolvimento do projeto fez se necessario a ampliagao sobre 0 conhecimento na area de redes e de programagao atraves de pesquisas, bem como foram possiveis a utilizagao dos conhecimentos adquiridos em sala de aula. Utilizou-se para 0 desenvolvimento deste prot6tipo a linguagem de programagao Delphi. Foi observado ser uma Iinguagem robusta, a qual possibilita uma boa definigao gratica, alem de ser de facil aprendizado e utilizagao. Foi verificado que esta linguagem gera aplicativos de tamanhos reduzidos, logo de rapida execugao. Com relagao ao banco de dados Interbase, foi utilizado devido a sua interoperagao com 0 Delphi e por ser de distribuigao gratuita. Porem foram observadas diferengas na execugao dos comandos Sal entre Paradox e Interbase. A corregao destas diferengas entre comandos foi realizada atraves de pesquisas e f6runs na internet. o prot6tipo como um todo obteve uma boa performance. A sua operagao foi de forma continua, au seja, naG ocorreram ''travamentos'' no prototipo nem queda de conexao com 0 banco de dados. Desta forma, dados nao foram perdidos durante sua coleta, 0 que aumenta a confiabilidade das informagoes obtidas. Conciui-se que os ativos de uma rede de dados podem ser gerenciados com a utilizagao deste prot6tipo. Devido ao prot6tipo ser de desenvolvimento e distribuigao gratuita, possui urn grande diferencial quando comparado aos softwares existentes no mercado, sendo assim, pequenas e medias empresas podem utiliza-Io no gerenciamento de suas redes. 66 Como pr6ximos Irabalhos podem-se desenvolver novas funcionalidades, denlre elas: Gerenciamento grafico Novas tipos de relat6rios Gerenciamento simultaneo de grupos Desenvolvimento para Sistema operacional Linux 67 REFERENCIAS CARVALHO, Tereza Cristina Melo de Brito. Gerenciamento abordagem de sistemas. Sao Paulo: Makron Books,1993 OSIER, 1988 BATSON TANENBAUM, E GROBMAN Andrew -Aprenda de redes: uma em 14 dias Delphi 3 - Editora S. - Redes de Computadores - Editora Campos, Campus, 1997 - 3° edi~ao YURI Di6genes - Certifica~ao Cisco - CCNA 4.0 - Guia de Certifica~ao Exame #640-801 - 3° edi~ao - Editora Axcel Books MARTINS Marcondes, Agnaldo Lopes, MARAN I Sandro Paulo - Apostila de TCP/IP - Topologia Para 0 de Redes - 1995 -1996 Projeto de Redes. Disponivel em: http://www.projetoderedes.com.br/tutoriais/tutorial Acesso em 29 out 2006. eguipamentos de redes 01.php. CISCO SYSTEMS, Inc - Disponivel em: http:lLwww.cisco.com/en/US/products/ps6021Iindex.html. Acesso em 29 out 2006. CISCO SYSTEMS, Inc - Disponivel em: http:lLwww.cisco.comlenIUSlproductslps6545Iindex.html. Acesso em 29 out 2006. CISCO SYSTEMS, Inc - Disponivel em: http:lLwww.cisco.com/en/US/products/ps5854/index.html. Acesso em 29 out 2006. Projeto de Redes. Disponivel em: htto:lLwww.orojetoderedes.com.br/artigoslartigo utadores.php. Acesso em 29 out 2006. Projeto de Redes. Disponivel em: http:lLwww.projetoderedes.com.br/tutoriais/tutorial Acesso em 29 out 2006. RMON. Disponivel set 2006. CMIP. Disponivel set 2006. gerenciamento equipamentos de redes de redes de comp 02.php. em: http://www.rnp.br/newsgen/9901/rmon.htmI.Acessoem 10 em: http://penta.ufrgs.br/gr952/trab1/z_cmip.htmI.Acessoem 12 GERENCIA. Disponivel em 26 set 2006. em: http://www.rnp.br/newsgen/9712/gerencia.html. Acesso 68 ANEXO Author: Description: 1 - BIBLIOTECA Fran<;:ois PIETTE This unit encapsulate Using this object, PING you the ICMP.DLL into can easily ping a veL of type TPing. any host on your network. EMail: francais. francais. vlorks only in 32 bits mode (no Delphi 1) under NT or 95. If you wants to build a console mode program, use the TICMP object. You'll have a much smaller program. http://users.swing.be/francais . piette [email protected] http://www.rtfm.be/fpiette piet [email protected] francais. [email protected] January 6, 1997 1.11 Use the mailing list [email protected] See website for Creation: Version: Support: details. Legal issues: Copyright (e) 1997 - 2000 by FranGois PIETTE Rue de Grady 24, 4053 Embourg, Belgium. Fax: <francois. [email protected] . be> This software is implied warranty. for any damages provided In no arising 2. 74.56 I as-is I, without any express event will the author be held from the use of this software. Permission is granted to anyone to use this purpose, including corrunercial applications, and redistribute it freely, subject to the restrictions: 1. +32-4-365 software and to following or liable for alter any it The origin of this software must not be misrepresented, you must not claim that you wrote the original software. I f you use this software in a product, an acknowledgment in the product documentation would be appreciated but not required. Altered source versions must be plainly marked as is such, and must not be 3. This notice distribution. <1. You must misrepresented may not register be this as removed software being or the original altered from by sending software. any source a picture postcard to the author. Use a nice stamp and mention your name, street address, Updates: Nov 3D, Dec 13, the 1997 1997 May 05, 1998 EMail VI 00 Added VI 01 Added address and DNSLookup capability OnEchoRequest and any comment you like to say. (taken from TV1Socket) OnEchoReply events and removed corresponding DnDisplay event. This require to modify existing programs. Vl.02 Changed lpszClassName from I XSocketWindowClass' to 1 ICSPingNindowClass' to avoid class name conflict l'iith TWSocket. Thanks to 8ill Parke <[email protected]> who found the 69 Dec 26, 1998 problem. VI.IO Changed and added an 24, 1999 object (this was the sender in previous version). This require modification of existing code. Vl.ll Surfaced Flags property to allow fragmentation check (f'lags = $02 to enable fragmentation check) Vl.12 Changed argument name from Error to Status in all events to make sender argument •Icmp' which point reference to the TPing object underlaying Tlcmp Jan Nov 10, 2002 OnEchoReply to unit better reflect his use. 0 means OK ! Ping; I$IFDEF VERBO) /1 This source file 1/ IHn 32 features. {$ENDIF} is *NOT* compatible with Delphi 1 because it uses interface uses l'hndows, Messages, SysUtils, Classes, Ivinsock, canst PingVersion = 111; CopyRight String =' TPing (cl 1997-2000 ~'JM_ASYNCGETHOSTBYNAME= viM_USER + 2; Icmpi F. Piette Vl.l1 type TDnsLookupDone = procedure (Sender: TObject; Error: I'lord) of object; TPingDisplay = procedure (Sender: TObject; Icmp: TObject; Msg String) of object; TPingReply = procedure (Sender: TObject; Iemp: TObject; Status Integer) of object; TPingRequest = procedure (Sender: TObject; Icmp: TObject) of object; TPing '" class (TComponent) private TICMP; ncmp Hl-lNO; f1'lindowHandle array [0 .. MAXGETHOSTSTRUCTJ of char; FDnsLookupBuffer THandle; FOnsLookupHandle String; FDnsResult TDnsLookupOone; FOnDnsLookupDone TPingRequest; FOnEchoRequest TPingReply; FOnEchoReply TPingDisplay; FOnDisplay protected procedure l-~ndProc (var MsgRec: TMessage); procedure I-IMAsyncGetHostByName (var msg: TMessage); message I'JM ASYNCGETHOSTBYNAME; - procedure SetAddress (Value String); function GetAddress string; procedure SetSize (Value Integer) ; function GetSize Integer; procedure SetTimeout (Value Integer); function GetTimeout Integer; function GetReply TIcmpEchoReply; function GetErrorCode Integer; 70 function function function procedure function procedure function procedure procedure procedure public construCtor destructor function procedure procedure GetErrorString String; GetHostName String; GetHostIP String; SetTTL{Value Integer); GetTTL Integer; Setflags (Value Integer) ; Getflags Integer; IcmpEchoReply(Sender: TObject; Error: Integer); IcmpEchoRequest (Sender: TObject); IcmpDisplay(Sender: TObject; Msg: String); property property property property property property property published property Reply ErrorCode ErrorString HostName HostIP Handle DnsResult TIcmpEchoReply Integer String String String HNND String Address String Size Integer Create (Owner TComponent); Destroy; override; Ping Integer; DnsLookup(HostName String); CancelDnsLookup; override; virtual; read read read read read read read read write read write Timeout Integer read write TTL Integer read write Flags Integer read write OnDisplay TPingDisplay read write OnEchoRequest TPingRequest read write OnEchoReply TPingReply read write OnDnsLookupDone TDnsLookupDone read write property property property property property property property property GetReply; GetErrorCode; GetErrorString; GetHostName; GetHostIP; f'WindowHandle; FDnsResul t; GetAddress SetAddress; GetSize SetSize; GetTimeout SetTimeout; GetTTL SetTTL; Getflags SetFlags; FOnDisplay FOnDisplay; FOnEchoRequest FOnEchoRequest; FOnEchoReply FOnEchoReply; f'OnDnsLookupDone FOnDnsLookupDone; end; procedure Register; implementation I'" ••••••••••••••••••• , ••••••••••••• '} procedure Register; begin RegisterComponents end; t (' fpiette', * ;. '* * " ;. * * * * ;. * ( This function { •..• indows. This is is [TPingj); * * * ;. * * ;.. * * * * a callback the very function. low level * * •.. * It means that message handler •..;.. •..•..~ * ;.. * ;.. *} it is called by procedure setup to} 71 ( handle the message sent by windows (winsock) function X50cketl'IindowProc ( ahl1nd HNND; auMsg Integer; awParam NPARAM; alParam LPARAM): Integer; stdcall: Obj MsgRec to handle messages. TPing; TMessage: begin ( At window creation ask windows Obj := TPing(GetNindowLong(ahWnd, to store 0)); a pointer to our object ( If the pointer is not assigned, just call the default procedure if not Assigned(Obj) then Result := Defl'lindowProc(ahWnd, auMsg, awParam, alParam} else begin ( Delphi use a TMessage type to pass paramter to his kind { windows procedure. So we are doing the same.. MsgRec.Msg :"" auMsg: MsgRec. wParam : = awParam; MsgRec.lParam : = alParam; Obj .\·/ndProc (MsgRec); Result := MsgRec.Result: end; of) } end; {'" ) 1 This , and global variable is used to store needed to register the window is XSocketi-lindowClass: style IpfnrlndProc cbClsExtra cbNndExtra hlnstance hlcon hCursor hbrBackground Ips zMenuName IpszClassName TVlndClass = ( 0; @XSocketWindowProc; 0; SizeOf (Pointer); 0; 0; 0; 0; nil; 'ICSPingiiindowClass') (Allocate a window handle_ This {time we are called, and creating function XSocketAllocateHi"i'nd(Obj TempClass ClassRegistered the class windows class characteristic} used by TiiSocket ; means registering a window class a new window each time we are TObject): Ht>IND; the called Tt>lndClass; Boolean; begin { Check if the window class is already registered XSocketiolindowClass _hlnstance : •••Hlnstance; Class Regis tered : = GetClasslnfo (Hlnstance, XSocket\iindowClass lpszClassName, TempClass) ; if not ClassRegistered then begin ( Not yet registered, do it right now Result : = rlindow5 _RegisterClass (XSocketWindowClass) ; first) _ } 72 if Result Exit; 0 then = end; { Now create a new window := CreateWindowEx(WS Result EX TOOLWINDOW, XSocketWindowClass .lps zClassName , , { l'iindow name } WS POPUP, (Window Style) 0, -0, (Y ) 0, 0, 0, 0, Hlnstance, nil); { Height (hl'lndParent { hMenu (hlnstance ( CreateParam { if sUccessfull, the ask windows to store { into the reserved byte (see RegisterClass) if (Result <> 0) and Assigned (Obj) then Setl'linctowLong (Result, 0, Integer (Obj)); the I ) } ) ) object reference end; "" { Free .•.•.• the procedure begin ., .• * window *;,;. .• ., Destroyl-lindow * * * handle XSocketDeallocateHWnd (I1nd) (Wnd: HNND); ; end; {* .•.• ";' '" procedure begin * .• ";' -Ie .• TPing.i1ndProc(var with MsgRec if do " * .• *"" MsgRec: *"" * .•.•.•.•.•.• TMessage); '" * .•.•.• begin Msg = WM ASYNCGETHOSTBYNAME then WMAsyncGetHostByName (MsgRec) else := DeflVindowProc{Handle, Result end; Msg, wParam, end; * * * .•* * * * * * * *., * * * * * * * procedure TPing. Phe IPAddr Error vlt1AsyncGetHostByName (var msg: TMessage); Phostent; TlnAddr; Word; begin if msg.wParam Exit; <> Longlnt(FDnsLookupHandle) then FDnsLookupHandle := 0; Error : = Msg. LParamHi; if Error = 0 then Phe IPJI.ddr FDnsResult end; if (@FDnsLookupBuffer); := PlnAddr(PheA.h addr list")"; := StrPas (inet ntoa (IPAddr)) - Assigned (FOnDnsLookupDone) FOnDnsLookupDone (Self, then Error); i lParam); "''' *} 73 end; .. .. { ,', constructor begin ,", TPing. Inherited Create Create .. ,' , .. , .. "., .. , ... ... , ) TCornponent); (Owner (Owner); Flcmp FIemp.OnDisplay Flcmp.OnEchoRequest Flcmp.OnEchoReply ;"" := : := TICMP.Create; IcmpDisplay; IcmpEchoRequest; IcmpEchoReply; =; { Delphi 32 bits has threads and VeL is ( We need to do our own way to be thread Fl'lindowHandle := XSocketAllocateHWnd(Self); not thread safe. safe. end; ;.;. .•.* destructor begin * * * * TPing. * *;. * * .••*;.;. *;. "' * * * * *;. Destroy; CancelDnsLookup; XSocketDealloca teHWnd (Fl-lindowHandle) if Assigned{FIcmp) then begin Flcmp.Oestroy; Flcmp := nil; end; inherited Destroy; Cancel any pending dns lookup i end; * if * •.. *;. *;.;.;.;.;. procedure begin TPing. IcmpDisplay * * * Assigned (FOnDisplay) then FOnDisplay(Self, Sender, * *;. (Sender: * * .,.,.,. * * * TObject; Msg: String); ') Msg); end; , { procedure begin if . , TPing.IcmpEchoReply{Sender: Assigned (FOnEchoReply) then FOnEchoReply(Self, Sender, TObject; Error * Integer); * * * *} Error); end; * * * * * procedure TPing. begin if * * * * * * * * * * * * IcmpEchoRequest (Sender: Assigned(FOnEchoRequest) FOnEchoRequest (Self, TObject) ; * * * * * * * * * * *} * * * * * * * * * * * *} * then Sender); end; {' . function begin if * * TPing. * * Ping Assigned(Flcmp) Result := Result := 0; * * * * * Integer; then FIcmp.Ping else * * * * * * * * * * * 74 end; * procedure begin #%d' * '" * * TPing. * * * * CancelDnsLookup; * * * * * if FDnsLookupHandle Exit; if l'lSACancelAsyncRequest raise Exception. CreateFmt ..................... ) 0 then = F~;;~~~~;:~~~~::~i::"~~R~'f~~: ( failed, error J [WSAGetLastErrorJ) FDnsLookupHandle := ; 0; Assigned{FOnDnsLookupDone) then FOnDnsLookupDone (Self, "\\TSAEINTR); if end; {* * * procedure * * * * *,. * * TPing. IPAddr * * * * (HostName * DnsLookup ............. * String) ; ) TlnAddr; begin ( Cancel any pending if FDnsLookupHandle lookup 0 then <> "\-;rSACancelAsyncRequest FDnsResult := (FDnsLookupHandle); "; IPAddr.S addr := Inet addr(@HostName[l]); if IPAddr.S addr <> u-long(INADDR NONE} FDnsRes;:;-lt := Strpas(inet_ntoa(IPAddr)}; if Assigned(FOnDnsLookupDone) then FOnDnsLookupDone (Self, 0); Exit; end; FDnsLookupHandle if : = !'lSAAsyncGetHostByName '%s: ean" [HostName, t ( . if TPing. SetAddress JI.ssigned(FIemp) Flcmp.Address (FWindowHandle, start DNS lookup, l'lSAGetLastErrorJ); { procedure begin begin l'lM ASYNCGETHOSTBYNAME, @HostName[lJ, @FDnsLookupBuffer, SizeOf (FDnsLookupBuffer)); FDnsLookupHandle = 0 then raise Exception.CreateFmt end; then (Value Str ing) ; error #%d', . ) then := Value; end; {* * *.;,.;,.;,.;, function TPing. begin if ASSigned *.;, * * GetAddress * (FIemp) then * * * * String; * * .•. * * * * * * * .• * * * *,. * * * * *} 75 := Flcmp.Address Result else Result end; {* * * .•. * * * * * '" procedure begin if TPing. * * * * * SetSize (Value Integer) ; Assigned (Flcmp) then Flcmp.Size := Value; end; (* * * fUnction begin * * * * * * * TPing. GetSize * * * * * * .•. * * * * * * * * * * * * Integer; * * * * * .•. * if Assigned(Flcmp) then Resul t := Flcmp. Size else := 0; Result end; (* * * procedure begin * * * * * * * *"* SetTimeout TPing. Assigned (FIcrnp) Flcmp.Timeout if * * * * (Value * * Integer) * * *;, .•. '" * * * * *) ; then ;= Value; end; . {' * * * * * * * * * .•..•. * function begin if TPing. GetTimeout * * * Integer; * .... .. ,.,., ,"', '( (Flcrnp) then := Flcmp.Timeout Assigned Result else := 0; Result end; {* .•. * * procedure begin if * * * '" Set TTL (Value * * * * * * TPing. ,."." Integer); '{ end; (* •. *"* function begin if * * * * * * TPing.GetTTL Assigned Result * Integer; .................. '{ (FIcmp) then := Flcmp.TTL else := 0; Result end; {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} *) 76 procedure begin TPing. if Set Flags Assigned(FIcmp) Flcmp.Flags (Value Integer) ; then := Value; end; I' • "" *" function begin TPing. Get Flags if *"""" *"" "" ,*;'" Integer; * *"* '* '*""" Oo""" '*""* *} Assigned{Flcmp) then Result := Flcmp.flags else Result := 0; end; {*""* '* function begin if *,," '* TPing. GetReply * * *" '* *"" * * *"*""" TlcmpEchoReply; *" *" * '*""* * '* '* *} Assigned(FIcmp) then Result := Flcmp.Reply else FillChar(Result, SizeOf{Result) , 0); end; I' • """" function begin ,*""" * *" * TPing. GetErrorCode if Assigned Result Integer; .,.. , ,.,. '} (FIcrnp) then Flcmp.ErrorCode := else := -1; Result end; 1···'·····,· .... function begin if TPing. GetErrorString Assigned Resul t String; . .. " ..... , ... '} (FIemp) then : = Flcmp. ErrorString else Result := end; 1·········,·· function begin if 'rPing. Assigned Result GetHostName .. * * * * * * String; * * * * * * *" * * (FIcmp) then := Flcmp.HostName else Result := end; 1'··········. function begin if TPing. GetHostIP Assigned(Flcmp) String; then , , .. , "") *) 77 Result := Flcmp.HostIP else Resul t end; 1* * * * {procedure begin if * •. * * *;.- * * * SetOnDisplay TPing. Assigned (FIemp) Flcmp.OnDisplay * * * * * (Value TICMPDisplay) ; then := Value; end; ) {* * ;.- *;.-;.-.., (function begin if * * * * TPing. * *;.- * * * * * GetOnDisplay Assigned Resul t * * * * * * *;.- TICMPDisplay; (Flcmp) then : = Flcmp. OnDisplay else Result nil; ;= end; ) {' , * * {procedure begin if * * * * * * * * *.,;.SetOnEchoRequest TPing. Assigned(FIcmp) then Flcmp.OnEchoRequest * * * * * (Value TNotifyEvent) : = Value; end; ) (function begin if TPing. GetOnEchoRequest Assigned t Resul (FIcmp) TNotlfyEvent; then := Flcmp. := nil; OnEchoRequest else Result end; ) , {' * * {procedure begin if TPing. * * SetOnEchoReply *;.- * (Value * * * * * * * TICMPReply) Assigned(Flcmp) then Flcmp.OnEchoReply : = Value: end; ) {* * (function begin if * * * * 'rPing. Assigned Result * * * * * * GetOnEchoReply TICMPReply; (FIcmp) then := Flcmp.OnEchoReply else Result end: ) {' end. . :- nil: * * * * * * * * * * ANEXO 2 - BIBLIOTECA ICMP * : ; '" *;.- * * *;.- * *} 78 Auchor: Description: Fran~ois This unit PIETTE encapsulate the ICMP.DLL into an object of type TICHP. Using this object, you I'lorks rICMP only in 32 bits is perfect for can easily ping any host on your network. program, GUI you mode (no a console could use Delphi 1) under NT or 95. mode program, but if you build the TPing object. Then object wich is a true veL encapsulating the rICHP you can use object inspector to change properties or event handler. This is much simpler to EMail: francois. francais. use for a GUI program. http://users . swing. bel francais. [email protected] http;//www.rtfm.be/fpiette piet [email protected] francais. [email protected] January 6, 1997 1. 04 Creation: Version: Support: details. Legal issues: Use the mailing list piet te be [email protected] See website Copyright (C) 1997-2000 by Fran<;:ois PIETTE Rue de Grady 24, 4053 Embourg, Belgium. Fax: < francois . piet te@pophost . eunet. be> This software is implied warranty. for any damages provided In no arising +32-4-36574.56 r as-is r, without any express event will the author be held from the use of this software. Permission is granted to anyone to use this purpose, including corrunercial applications, and redistribute it freely, subject to the restrictions: 1. The origin of this software you must not claim that you If you use this software in in the product documentation not required. 2. Altered source for versions or liable software for and to alter following any it must not be misrepresented, wrote the original software. a product, an acknowledgment would be appreciated but is must be plainly marked as such, and must not be 3. This notice distribution. 4. You must misrepresented may not register be this as being removed software or the original altered from by sending software. any source a picture postcard to the author. Use a nice stamp and mention your name, street address, Updates: EMail address and any corrunent you like to say. 79 Dec 13, 1997 VI.01 1998 199B corresponding OnDisplay event. This require to modify programs. VI.02 Deplaced address resolution just before use VI. 93 Changed TIPAddr and others to LangInt to avoid Added OnEchoRequest and OnEchoReply events and removed the l-:1ar 15, Sep 24, Jan unit 24, 1999 problems with Delphi VI.lI Surfaced Flags (Flags = IP_FLAG_DF <1 property to enable to allow fragmentation fragmentation check) existing range check Iemp; interface 1 SIFDEF VERBO) This source file / / l'i'in 32 features. ($ENDIF) 1/ t1indows, SysUtils, const IcmpVersion IcmpDLL = = 102; 'icmp. is "'NOT* compatible Classes, dll' 1 because j to transports and '" 0; 11000; (IP_STATUS BASE (IP STATUS-BASE (IP-STATUS-BASE (IP-STATUS-SASE (IP-STATUS-BASE = (IP-STATUS-BASE (IP-STATUS-BASE = (IP-STATUS-SASE (IP-STATUS-BASE (IP-STATUS-SASE (IP-STATOS-SASE (H'-STATUS-SASE (IP-STATUS-SASE (IP-STATUS-BASE IP=:BAD=ROUTE IP TTL EXPIRED TRANSIT IP- TTL-EXPIRED -REASSEM IP=:PARAM_PROBLEM I P SOURCE QUENCH IP-OPTION-TOO BIG (IP:)TATUS=:SASE (IP STATUS BASE (IP-STATUS-SASE (IP::::'STATUS=:SASE IP=:BAD _DESTINATION / status codes passed P_ AD DR_DELETED P SPEC MTU CHANGE P=:MTU_CHANGE Delphi NinSockj returned / / IP status codes IP_SUCCESS IP STATUS BASE r()UF_TOO_SMALL I P DEST NET UNREACHABLE IP=:OEST=:HOST UNREACHABLE IP _ DEST _ PROT_UNREACHABLE I P DEST PORT UNREACHABLE IP=:NO_RESOURCES IP BAD OPTION I(~HVI_ERROR I P PACKET TOO BIG IP-REQ TIMED QUT IP-BAD-REQ - / I I I with up on status indications. (IP STATUS BASE (IP-STATUS-SASE user + IOCTLs. 1); + 2); 3); + 4); + 5); + 6); + 7); + 8); + 9); + 10); + 11); + 12); + 13); + 14); + + 15); 16) ; + 17) ; + 18) ; + + 19); + 20); (IP=:STATUS=:SASE + 21); (IP_STATUS + IP _GENERAL_FAILURE MAX_I P_STATUS BASE 255) i it uses 80 1/ I P header IP_FLAG_OF flags /I Don't - /I = / / = /1 End of list option No operation Security option. Loose source route. Strict source route. Record route. Timestamp. Stream 1D (obsolete) - S02; fragment this packet. 1/ I P Option Types IP_OPT_EOL IP_OPT_NOP IP _OPT_SECURITY IP_OPT_LSRR IP_OPT_SSRR IP_OPT_RR IP_OPT_TS IP_OPT_SID MAX_OPT_SIZE $00; SOl; $82; '" S83; = $89; = $07; PIcmpEchoReply TIcmpEchoReply Address: Status: RTT: milliseconds DataSize: Reserved: Data: Options: end; /I 1/ 1/ "" $44; = $88; •• $40; type / / IP types TIPAddr := 100910t; TIPNask - Loog10t; TIPStatus := Long1nt; PIPOptionlnformation TIPOptionlnformation TTL: TOS: Flags: OptionsSize: OptionsData: end: / / // II II II = = Byte; Byte; Byte: Byte; PChar: An IP An IP Status address. subnet mask. code returned from IP APIs. "TIPOptionlnformatioo; packed record 1/ Time To Live (used for traceroute) 1/ Type Of Service (usually 0) II IP header flags (usually 0) II Size of options data (usually 0, II Options data buffer "TIcmpEchoReply: = packed record TIPAddr; Dl'lord: Dt1ord; max = t1ord; Nord: Pointer; TIPOptionInformation; II II II Replying address IP status value Round Trip Time II II II II Reply data size Reserved Pointer to reply Reply options in data buffer II II II II II II IcmpCreateFile: Opens a handle on which ICMP Echo Requests can be issued. Arguments: None. Ret.urn Value: An open file handle or INVALID_HANDLE_VALUE. Extended error information II is available by calling GetLastError () . TlcmpCreateFile = function: THandle: stdcall: II II II II II II 40) IcmpCloseHandle: Closes a handle opened by ICMPOpenFile. Arguments: IcmpHandle - The handle to close. Return Value: TRUE if the handle was closed successfully, otherwise Extended II error information is available by calling GetLastError TlcmpCloseHandle = function (IcmpHandle: THandle): Boolean; FALSE. () . stdcall; 81 / / IcmpSendEcho: Sends an leMP Echo request and returns one or more replies. The call returns when the timeout has expired or the reply buffer is filled. / / Arguments: / / IcmpHandle - An open handle returned by ICMPCreateFile. / / DestinationAddress - The destination of the echo request. 1/ RequestData - A buffer containing the data to send in the / / request. // RequestSize - The number of bytes in the request data buffer. - Pointer to the IP header options for the // RequestOptions request. May be NULL. II - A buffer to hold any replies to the request. /I ReplyBuffer On return, the buffer will contain an array II of ICMP_ECHO_REPLY structures followed by II options and data. The buffer should be large enough II to hold at least one ICMP_ECHO_REPLY structure II and 8 bytes of data - this is the size of II an ICMP error message. I I ReplySize - The size in bytes of the reply buffer. II Timeout - The time in milliseconds to wait for replies. II Value: I I Return Returns the number of replies received and stored in ReplyBuffer. II If II the return value is zero, extended error information is available II via GetLastError () . TIcmpSendEcho '" function (IcmpHandle: THandle; OestinationAddress: TIPAddr; Pointer; RequestOata: Word; RequestSize; PI POpt ion I nforma t ion; RequestOptions: ReplyBuffer: Pointer; m1ord; ReplySize: OWord Timeout: ): OWord; stdcall; II /I 1/ II Event handler type declaration TICMPDisplay = procedure (Sender: TICMPReply '" procedure (Sender: for TICMP.OnDisplay event. TObject; Msg String) of object; TObject; Error Integer} of object; II The object wich encapsulate the TICMP = class (TObject) private HModule; hICMPdll TIcmpCreateFile; IcmpCreateFile TlcmpCloseHandle; IcmpCloseHandle TlcmpSendEcho; IcmpSendEcho THandle; hICMP Calls TlcmpEchoReply; FReply String; FAddress FHostName String; (output) String; FHostIP (Output) ICMP.OLL II Handle for ICMP. DLL for the II Handle II II II ICMP Echo reply buffer Address given Dotted IP of host II Name of host ICMP 82 FIPAddress contact FSize to 56) FTimeOut 4000mS) FTTL send) FFlags FOnDisplay display TIPAddr; Integer; Integer; Integer i Integer; TICMPDisplaYi FOnEchoRequest FOnEchoReply FLastError packet FAddrResol procedure public TNoti fyEvent; TICMPReply; DWORDi ved Resol constructor destructor function procedure function property SetAddress; property property FTimeout; property property Property property property property property property FOnDisplay; II Address of II Packet II Timeout II Time /I II Options flags Event handler to II After IeMP size (default: (default To Live sending to (for String); String; Address String read FAddress write Size Timeout Integer Integer read read FSize FTimeout write write Reply TTL Flags ErrorCode TlcmpEchoReply Integer Integer DNORD String String String TICMPDisplay ErrorString HostName HostIP OnDisplay property OnEchoRequest TNotifyEvent property OnEchoReply TICMPReply end; = to Boolean; veAddr; Create; virtual; Destroy; override; Ping Integer; SetAddress (Value GetErrorString TICMPException host class read read read read read read read read FReply; FTTL write FFlags write FLastError; GetErrorString; FHostName; FHostIP; FOnDisplay write read write read write FOnEchoRequest FOnEchoRequest; FOnEchoReply FOnEchoReply; FSize; FTTL; FFlags; (Exception); implementation { constructor ) TICMP, Create; \'lSAData: TltlSAData; hICMP FSize FTTL FTimeOut := := := := begin / / ini tiaUse if INVALID HANDLE VALUE; 56; 64; 4000; winsock \\fSAStartup($lOl, raise WSAData) TICMPException, <> Create 0 then ( r Error initialising Ninsock r) ; 83 II register the icmp.dll stuff hICMPdll := LoadLibrary(icmpDLLj; if hICMPdll = 0 then raise TICMPException.Create @ICMPCreateFile @IcrnpCloseHandle @IcmpSendEcho if (@ICMPCreateFile (@IcmpCloseHandle (@!cmpSendEcho = raise hICMP hICMP if * * * destructor begin to register (hICMPdll, (hICMPdll, (hICMPdll, + r icmpDLL); IcmpCreateFile') 'IcmpCloseHandle'); 'IcmpSendEcho'); ; I = Nil) or '" Nil) or Nil) then TICMPException. Create ( 'Error loading dll functions'); IcmpCreateFile; INVALID_HANDLE_VALUE = raise end; (* := (' Unable : = GetProcAddress := GetProcAddress : = GetProcAddress TICMPException. * * * * * * * TICMP. Destroy; then Create * * * * (' Unable * to * get * * ping * '* handle * '* '* * '* r) ; '* * '* '* '* '* '*} hICMP <> INVALID_HANDLE_VALUE then IcmpCloseHandle (hICMP); hICMPdll <> 0 then FreeLibrary (hICMPdll) ; WSACleanup; inherited Destroy; if if end; . (" function begin if Minlnteger(X, Y: Integer): .." Integer; ," ') X >'" Y then Result :'" Y else Result :'" X; end; (" .. .,', procedure Phe ,", .. '* TICMP. Resol veAddr; PHostEnt i II begin * * '* '* HostEntry * * buffer '* * '* '* for * .. '* name lookup II Convert host address to IP address FIPAddress := inet addr (PChar (FAddress) ); if FIPAddress <> LongInt (INADDR NONE) then else II Was a numeric dotted FHostName : = FAddress begin address let it II Not a numeric dotted address, try to Phe := GetHostByName (PChar (FAddress) ); if Phe = nil then begin FLastError Assigned if Exit; in this format resolve by name : = GetLastError; (FOnDisplay) then FOnDisplay(Self, 'Unable to resolve' + FAddress); ') 84 end; FIPAddress FHostName ::= := longint (plongint Phe".h_name; (Phe" h_addr_list") ") ; end; StrPas :"" TRUE; FHostIP FAddrResolved := (inet_ntoa (TInAddr (FIPAddress) ) ); end; .......... ~ (' procedure TICMP. SetAddress (Value begin / / Only change if needed (could if FAddress :; Value then Exit; FAddress := Value; FAddrResolved := FALSE; / / Resol veAddr; end; take a long time) ........ . (' function TICMP.GetErrorString begin case FLastError of IP_SUCCESS: IP _BUF _TOO_SMALL: I P_ DEST_NET_UNREACHABLE; IP DEST HOST UNREACHABLE: IP - DEST-PROT-UNREACHABLE: IP=DEST=PORT=UNREACHABLE: IP_NO_RESOURCES: IP_BAD_OPTION: IP Ht1 ERROR: IP=PACKET_ TOO_BIG: IP REQ TIMED OUT: IP-SAD-REQ: I()AD::)OUTE: IP _TTL_EX PI RED_TRANSIT: I P_TTL_EXPIRED _ REASSEM: I P PARAM PROBLEM: I P-SOURCE QUENCH: IP=OPTION =TOO_BIG: IP _BAD_DESTINATION: I P_ ADDR_DELETED: I P_SPEC _ MTU_CHANGE: I P MTU CHANGE: IP =GENERAL_FAILURE: ) String); ' ) String; Result Resul t Result Result Result Result Result Result Resul t Result Result Result Resul t Result Result Result Result Result Result Result Result Result Result Result :-= :- 'No error'; 'Buf fer too 'Destination 'Destination 'Destination small'; network unreachable'; host unreachable'; protocol unreachable'; 'Destination port unreachable'; 'No resources'; 'Bad option'; : '" 'Hardware error'; 'Packet too big'; 'Request timed out'; 'Bad request'; 'Bad route'; 'TTL expired in transit'; := 'TTL expired in reassembly'; 'Parameter problem'; 'Source quench'; := 'Option too big'; := 'Bad Destination'; 'Address deleted'; 'Spec MTU change'; 'MTU change'; := 'General failure'; 'Pending' ; else Result := 'ICMP error I' + IntToStr(FLastError); end; end; , (' function """" TICMP. Ping Integer; var BufferSize: Integer; * * * * * * .•..•..•.* .•.* '" * .•..•.* "') 85 pReqData, pData: Pointer; pIPE: IPOpt: Msg: begin / I IeMP Echo / / IF Options PlcmpEchoReply; TIPOptionlnformation; String; Result FLastError reply for buffer packet := 0; := 0; if not FAddrResolved Resal veAddr; if FIPAddress '" LangInt {INADDR NONE} then FLastError := IF_BAD_DESTINATION; if Assigned (FOnDisplay) then FOnDisplay then (Self, 'Invalid host begin address I ) ; Exit; end; /1 Allocate space for data buffer BufferSize := SizeOf(TICMPEchoReply) GetMern (pReqData, FSize); GetMem(pData, FSize); GetMem(pIPE, BufferSize); space + FSize; try II Fill data buffer FillChar(pReqData A , with some data FSize, $20); bytes Msg ;= 'Pinging from Delphi code written Move(Msg[l], pReqDataA, Minlnteger(FSize, pIPEA.Data := pData; FillChar(pIPE", if SizeOf(pIPEA), Assigned(FOnEchoRequest) FOnEchoRequest (Self); FillChar(IPOpt, IPOpt. TTL IPOpt. Flags 0); then SizeOf(IPOpt), : = FTTL; 0); Result FLastError FReply if FIPAddress, := GetLastError; : = pIPE"; Assigned(FOnEchoReply) FOnEchoReply(Self, @IPOpt, pIPE, then Result); finally / / Free those buffers FreeMem(pIPE) ; FreeMem(pData) ; FreeMem (pReqData) ; end; end; end. APENOICE by F. Piette'; Length(Msg))); 1 • COOIGO FONTE· Form_Banco pReqData, BufferSize, FSize, FTimeOut); to send 86 unit Form_Banco; interface SysUtils, DBClient, Classes, IBDatabase, type DB, Provider, IBCustornDataSet, OSXpress, lBTable, IBQuery, SqlExpr, FMTBcd, Dialogs; TBaneo = class (TDataModule) Conectar: TSQLConnection; DSGrupo: TDataSource; tb_grupo: TIBTable; Banco: TIBDatabase; Transaction: TIBTransaction; DSAtivosRede: TDataSource; tb AtivoRede: TIBTable; tb=Historico: TIBTable; DSHis tcrico: TDataSource; DSQuery: TDataSource; TIBQuery; TIBQuery; tb_grupopostError EDatabaseError; var private Action: ( Private public { Public end; var (DataSet: TDataSet; TDataAction); declarations ) declarations Banco; TBaneo; implementation {$R * .dfm} II dados rotina para procedure EDatabaseError; var Action: erroMens begin ErroMens primaria tratamento TBanco de tb erros ErroMens if ErroMens begin faz insercao TDataSet; de E: TDataAction); E.Message; 'Key violation. then invalida end; <> "then ShowMessage (' Erro action := daAbort; end; end; quando (DataSet string; :'" if end. amigaveis grupoPostError de inser~ao !'); II testa !'); se se ja existe a chave 87 APENOICE 2 - COOIGO FONTE - Form_CadastroComputadores unit Form CadastroComputadores: interface 11indows, Controls, Forms, Dialogs, Messages, StdCtrls, SysUtils, DBCtrls, Variants, Mask, DB, Classes, ExtCtrls, Graphics, DBTables, Grids, DBGricts, ComCtrls, Buttons, Form_Banco; type TFarmCadastroComputadores •• class (TForm) Bevell: TBevel; StatusBarl: TStatusBar; GroupBoxl: TGroupBox; DBNavigatorl: TDBNavigator; Labell: TLabel; DBEditl: TDBEdit; Labe12: TLabel; DBEdit4: TDBEdit: Labe14: TLabel; Label3: TLabel; DBEdit3: TDBEdit; DBMeroo!: TDBMemo; LabelS: TLabel; GroupBox2: TGroupBox; DBGridl: TD8Grid; DBEdi t2: TDBEdi t; ComboBoxl: TComboBox; Editl: TEdit; Button!: TButton; procedure ComboBoxlChange(Sender: TObject); procedure FormActivate (Sender: TObject): procedure FormClose (Sender: TObject; var Action: TCloseAction); procedure DBGridlCellClick (Column: TColumn): procedure OBGridlDrawColumnCell (Sender: TObject: const Rect: TReet: OataCol: Integer; Column: TColumn; State: TGridDrawState); procedure ButtonIClick(Sender: TObject); private { Private declarations} public ( Public declarations ) end: var FormCadastroComputadores: TFormCadastroComputadores; implementation {$R .•..dfm} TObject) procedure TFormCadastroComputadores. : begin / / Traz todos os grupos e mostra a descricao Banco.tb AtivoRede.Edit; Banco. Query. Close; Banco.Query. DataSource := Banco. DSGrupo: cod_grupo·' Banco. Query. Banco.Query. Banco .Query. +ComboBoxl. Open: SQL.Clear; SQL.Add ( 'SELECT Text+' ') : FROM ComboBoxlChange do // (Sender: grupo escolhe a tabela imERE 88 Banco. Query. Open; Editl.'l'ext ;= Banco.Query.Fields[lJ DBEdit2. Field. Text := ComboBoxl. .AsScring; Text; end; procedure TFormCadastroComputadores. begin 1/ quanta ativa 0 formulario traz componente combobox ComboBoxl . I terns. Clear; Banco. tb grupo. First; while not Banco.tb_Grupo.Eof do begin ComboBoxl Items .Add (Banco. tb Grupo Banco. tb Grupo. Next; - FormActivate todas FieldByName as (Sender: grupos ( I Cod _grupo TObj eet) ; cadastrados ') . AsString) no ; end; end; procedure TFormCadastroComputadores FormClose (Sender: TObject; var Action: TCloseAction); begin DBEdit1.SetFocus; II forca 0 focus no campo cfoedit! Banco.tb_grupo,Cancel; /1 cancela as opecacoes pendentes houver TColumn) do end; procedure ; begin / / quando TFormCadas clicar no dbgrid troComputadores traz no DBGridlCellClick componente combobox (Column: a conteudo grupo comboboxl end; procedure Text :"" dbgrid1.Columns.Grid.Fields(1) TFormCadastroComputadores. .AsString; DBGridlDrawColumnCell (Sender: TObject; canst Rect: TRect; DataCal: State: TGridDrawState); begin / / quando clicar no dbgrid do Integer; traz Column: no componente TColumn; combobox a canteudo grupo comboboxl.Text :=: dbgridl.Columns.Grid. Fields [1] .AsString; end; procedure TFormCadastroComputadores. Button1Click (Sender; TObject); begin / I pergunta se deseja realmente excluir a item selecionado if messagedlg ( 'Confirma a Exclusao ?', mtwarning, [mbcancel, mbOK), 0) HrOK then begin / I caso a escalha seja OK, sera excluido 0 ativo de rede banco. Query. Close; banco.Query.DataSource ;= banco.OSAtivosRede; banco.Query.Open; banco.Query. SQL.Clear; banco .Query. SQL .Add (' DELETE FROM tb_computadores where cod computador = '+ dbeditl.Text); banco.Query.Open; banco. tb _ Ati voRede. Refresh; end; end; end. 89 APENOICE t uni 3 • COOIGO FONTE· Form_CadGrupos Form_ CadGrupos; interface l'lindows, Messages, Forms, Dialogs, StdCtrls, Form Banco, ComCtrls, Buttons; Controls, ExtCtrls, SysUtils, Mask, Variants, DBCtrls, DB, Classes, DBTables, type TFormCadGrupos = class (TFormj StatusBarl: TStatusBar; GroupBoxl: TGroupBax; GroupBox2: TGroupBox i DBNavigatorl: TDBNavigator; DBEditl: TDBEdit; DBEdi t2: TDBEdi t; DBEdit3: TDBEdit; Labell: TLabel; Labe12: TLahel; Label3: TLabel; DBGridl: TDBGrid; Button!: TButton; procedure FormClose (Sender: TObject; var procedure DBNavigatorlClick (Sender: TNavigateBtnj; procedure Button!Click(Sender: TObject); private { Private declarations} public { Public declarations end; Graphics, Grids, DBGrids, Action: TCloseAction); TObject; Button: var FormCadGrupos: TFormCadGrupos; implementation uses (SR no PingTstl; ~.dfm) procedure TFormCadGrupos. FormClose (Sender: TObject; var Action: TCloseAction); begin / / quando fechar 0 formulario grupos coloca as combobox PingTstForm. ComboBoxl. Items. Clear; Banco.tb grupo.First; while not Banco.tb_Grupo.Eof do begin PingTstForm. tring) i ComboBoxl. Items .Add (Banco. tb Grupo. -- Banco. tb _ Grupo. Next i FieldByName grupos ('Cod cadastrados grupo r) .AsS 90 end; end: procedure Button: begin TFormCadGrupos TNavigateBtn); DBNavigatorlClick (Sender: TObj ect; dbedi tl . SetFocus; end; where procedure var TFormCadGrupos Sucesso begin integer; / I soma quantos ativQs Sucesso ;= 0; banco. Query. Close; de banco, banco. banco, : = banco. Query. Query. Query. banco.Query. cod grupo = ba~co. Query. Sucesso if DataSource Open; SQL. Clear; , : = banco. Sucesso > Query. existem II messagedlg mbOK] , 0) [mbcancel, begin II caso a escolha banco. Query. Close; Query. Query. Query. (0 casa 'Existem banco. banco. banco. dbeditl Fields 1/ 0 then end if ?' , mtwarning, rede nao existe se OK, excluira Query. SQL.Add (' DELETE Query. Open; banco. end; tb grupo. SetFocus; Refresh; ati redes : = banco. banco. - FROM tb_computadores vas de rede cadastrados ativQs de rede no grupo !!!'); neste ('Confirma MrOK then banco. Text); end; dbeditl end; end. AS Sucesso J • As Integer; exista de Da taSource Open; SQL. Clear; grupo DSAtivosRede; Ativos = TObject); neste SQL.Add ( 'SELECT CDUNT(*) + dbedi t1. Text) ; Open; else begin '+ ButtonlClick(Sender: grupo Exclusao 0 grupo DSAti vosRede; FROM tb _grupos where cod_grupo 91 APENDICE unit 4 • CODIGO FONTE· Form_GeraRelatorio Form_GeraRelatorio; interface uses l'lindows, Forms, Dialogs, Messages, DB, SysUtils, DBTables, Variants, QRCtrls, QUickRpt, type TFormGeraRelatorio = class QuickRepl; TQuickRep; QRBandl: TQRBand; (TForm) QRSubDetaill; TQRSubDetail; QRLabell: TQRLabel; QRLabe12; TQRLabel; QRLabe13: TQRLabel; QRLabe14: TQRLabel; QRDBTextl: TQRDBText; QRDBText2: TQRDBText; QRDBText3: TQRDBText; QRDBText4: TQRDBText; QRLabe15: TQRLabel; QRPerdas: TQRLabel; QRLabe17: TQRLabel; QRTotal: TQRLabel; QRLabe19: TQRLabel; QRSucesso; TQRLabel; QRTotalP: TQRLabel; QRSucessoP: TQRLabel; QRPerdasF: TQRLabel; QRNome: TQRLabel; private { Private public { Public end; declarations} declarations FormGeraRelatorio: implementation {$R end. *.dfm} TFormGeraRela torio; Classes, ExtCtrls, Graphics, Controls, Form_Banco; 92 APENOICE unit 5 • COOIGO FONTE· Form_RelatorioAtivo Form_RelatorioAtivo; interface \'lindows, Forms, Dialogs, Messages, SysUtils, StdCtrls, Grids, Classes, Variants. type TFormRelatorioAtiva = class (TForm) GroupBoxl: TGroupBox; Btnlmprimir: TButton; Edit!: TEdit; procedure BtnlmprimirClick(Sender: private { Private declarations} public { Public declarations end; var FormRela torioAti va: Graphics, Controls, DBGrids; TObject); TFormRelatorioAti va; implementation uses Form_GeraRelatorio, {SR' .dfm} procedure Sucesso, begin if Form_Banco: TFormRelatorioAtivo. Total, PorcentualP, editl.Text = begin showmessage (' editl. SetFocus; end " E then necessario BtnlmprimirClick (Sender: Perdas, PorcentualS /1 enaa casa informar escolha a TObject); Real; nada IP! ' ) ; else begin / / soma na varia vel SUCESSO a quantidade de vezes 0 ativo escolhido 0 destine Banco. Query. Close; Banco. Query. Da taSource : = Banco. DSHis torico; Banco. Query .Open; Banco. Query. SQL. Clear; Banco.Query.SQL.Add( 'SELECT COUNT(*) AS Sucesso FROM tb historico l'iHERE Host = "'+Editl.Text+'" AND Resposta <> 4194324'); Banco. Query. Open; Sucesso : = Banco.Query. Fields [0) .Aslnteger; alcancou foi II soma na variavel TOTAL a guantidade de vezes testado Banco. Query. Close; Banco. Query. DataSource : - Banco. D5Histor ico; 0 ativo escolhido 93 Banco. Query. Open; Banco. Query. SQL. Clear; Banco.Query.SQL.Add( 'SELECT COUNT(*} AS Total 1'1HERE Host = "'+Editl.Text+''''); Banco. Query .Open; Total : = Banco. Query. Fields [OJ .P..slnteger; / / seleciona Banco. Query. to 0 historico Close; Banco. Query. Banco. Query. Banco. Query. DataSource Open; SQL. Clear; do ativQ : '" Banco. // percentuais Format Format total > 0 then begin / / faz a percentual Perdas := Total PorcentualP : = Perdas PorcentualS := Sucesso end; faz a formata<:;ao escolhido DSHistorico; * FROM tb_historico Banco.Query.SQL.Add('SELECT "'+Editl.Text+'''') ; Banco. Query. Open; if FROM tb_historico * I1HERE Host = Sucesso; 100 / Total; " 100 I Total; necessaria para a apresentacao do totais e as FormGeraRelatorio. QRPerdasP. Caption := {' %3n' I (PorcentualP] ) +' %' ; FormGeraRela torio. QRSucessoP. Caption := ( , % 3n ' I [Porcen tualS] ) + ' %' ; FormGeraRelatorio. QRTotalP. Caption : = '100%'; FormGeraRelatorio. QRPerdas .Caption : = Format {' %5n' I [Perdas] } ; FormGeraRelatorio. QRSuces$o. Caption : = Format {' %5n' I (Sucesso] ); FormGeraRelatorio.QRTotal.Caption := Format {' %5n' I [Total] }; FormGeraRelatorio. QRNome. caption : = ' Relat6rio de Disponibilidade do Ati vo de Rede 'i FormGeraRelatorio. end; end; end. QuickRep1 Preview; 94 APENOICE unit 6 - COOIGO FONTE - Form_RelatorioPeriodo Form_RelatorioPeriodo; interface 'tlindows, Forms, Dialogs, DBTables, Messages, SysUtils, Buttons, StdCtrls, Form_Banco; Variants, ExtCtrls, Classes, Cornetrls, Graphics, Grids, DBGrids, Controls, DB, type TFormRelatorioPeriodo - class (TForm) Bevell: TBevel; StatusBarl: TStatusBar; PageControll: TPageControl; TabSheetl: TTabSheet; Labell: TLabel; DateTimePickerl: TDateTimePicker; Labe12: TLabel; DateTimePicker2; TDateTimePicker; Btnlmprimir: TSpeedButton; Beve12: TBevel; BtnApagar: TSpeedButton; procedure BtnlmprimirClick(Sender: TObject); procedure FormActivate (Sender: TObject); procedure BtnApagarClick(Sender: TObject); private ( Private declarations) public { Public declarations end; var FormRelator ioPer iodo: TFormRelatorioPeriodo; implementation uses Form_GeraRelatorio; (SR .•. dfm) procedure TFormRelatorioPeriodo. BtnImprimirClick (Sender: TObject); var Inicio, Final string; Sucesso, Total, PorcentualP, Perdas, PorcentualS Real; begin / / faz verificacao entre a data inicial e a data final If DateTimePicker2. Date < DateTimePickerl. Date Then begin ShowMessage (' Intervalo de datas invalido, a data inicial e maior data final!'); DateTimePicker2 Date := DateTimePickerl.Date; end else begin / / soma na variavelque SUCESSO a quantidade testes as ativos de redes no periodo escolhido Inicio : = DateToStr (DateTimePickerl. Date); de vezes teve sucesso que a nos 95 Final := oateToStr (DateTimePicker2. Date) ; Banco.Query. Close; Banco. Query. DataSource ::z Banco. DSHistor ieo: Banco. Query. Open; Banco .Query. SQL.Clear; Banco. Query. SOL.Add (' SELECT COUNT(*) AS Suc8ssa FROM tb_historico I·JHERE Data >= '+#34+Inicio+B34+'AND Data <c'+#34+Final+fi34+' AND Resposta <> 4194324') : Banco.Query.Open; Sucesso : = Banco. Query. Fields [0] .Aslnteger; / / soma na variavelque TOTAL a quantidade de vezes que as ativos de redes foram testados no periodo escolhido Banco .Query. Close; Banco. Query. DataSource : z: Banco. DSHistorico; Banco .Query. Open: Banco.Query. SOL. Clear; Banco.Query.SQL.Add('SELECT COUNT(*) AS Total FROM tb historico ~'l'HERE Data >'" '+#34+Inicio+#34+'AND Data <='+~34+f'inal+1i34+"); Banco. Query. Open; Total ; - Banco. Query. Fields (0) .Aslnteger; 1/ seleciona todos ativos de redes que for am escolhido Banco. Query. Close; Banco.Query. DataSource ;::z Banco. DSHistorico; Banco.Query.Open; Banco.Query. SQL. Clear; Banco.Query.SQL.Add( 'SELECT f'ROM tb historico '+# 34 + Inicio+#34 + 'AND Data <=' + 1134+ f'inal + 1134+ 't) ; Banco. Query. Open; Banco. Query. DataSource ; - Banco. DSHistorico; if total > 0 then begin / / faz 0 percentual Perdas ; - Total - Sucesso; PorcentualP ; •• Perdas * 100 PorcentualS end; :"" Sucesso * 100 // faz a formatacao necessaria perncentuais FormGeraRelatorio.QRPerdasP.Caption f'ormGeraRelatorio.QRSucessoP.Caption FormGeraRelatorio.QRTotalP.Caption de / testados no periodo WHERE Data dos totais Total; / Total; para a apresentacao ;= ;= Format ('%3n' I (PorcentualP)) ;= Format (' %3n' I (PorcentualS)) '100%' i f'ormGeraRelatorio.QRPerdas. Caption ;,. f'ormat (' %5. On' , [PerdasJ ); FormGeraRelatorio.QRSucesso.Caption ;= Format ( '%5.0n' I (Sucesso]); f'ormGeraRelatorio.QRTotal.Caption ; = Format (' %5. On' I [Total] ); f'ormGeraRelatorio. QRNome. caption ; "" ' Disponibilidade dos Ati vos ' + inicio + ' a ' + f'inal; FormGeraRelatorio. QuickRepl Preview; end; end; procedure TFormRela torioPeriodo. FormActi va te (Sender; begin II inicializa 0 inicio e 0 £lm com a data do dia DateTimePickerl Date;= Date{); DateTimePicker2. Date : = Date () ; TObj ect) ; e +' %'; +' %'; de Rede 96 end: procedure Inicio Final TFormRelatorioPeriodo. BtnApagarClick (Sender: TObject) ; string; string; begin DateTimePicker2. Date < DateTimePickerl. Date Then begin ShowMessage (' Intervalo de datas invalido, a data a data final!') i DateTimePicker2 Date : "" DateTimePickerl. Date; end else begin If inicial e maiar 1/ elimina todo 0 historico entre as datas selecionadas Inicio := DateToStr (DateTimePickerl. Date) ; Final := DateToStr{DateTimePicker2.Date); Banco. Query. Oa taSource : = Banco. OSHis tor ico; Banco. Query. Close; Banco .Query. SQL. Clear; Banco. Query. SQL.Add (' DELETE FROM tb historico , +fi 34 +Inicio+# 34 + 'AND Oa ta <=' +# 34+Final + fi 34-+ I , ) ; Banco .Query. ExecSQL; ShowMessage (' Dados apagados com sucesso.'); end; end; end. WHERE Data que 97 APENDICE CODIGO 7 FONTE - BIBLIOTECA PING MODIFICADA Creditos: Author: Creation: Version: EMail: Biblioteca Ping Fran<;ois PIETTE November 30, 1997 1.03 francais. [email protected] francais. [email protected] francais. [email protected] Description: Legal issues: Updates: Dec 13, 1997 Dec 26, 1998 Nov 10, 2002 Vl 01 Use the new OnEchoRequest and OnEchoReply events. VI 02 Changed event handler for new TPing version (1.10) VI 03 Added Reply.Status in display when failed Changed argument name from Error to Status in EchoReply event (same change has in component). Desenvolvimento do Helio Ishii Stroparo Rafael Avila Leite , / /www.overbyte.be / /www.rtfm.be/fpiette This demo show how to use the TPing obj ect to ping any host. Copyright (e) 1997-2002 by Fran/;:ois PIETTE Rue de Grady 24,4053 Embourg, Belgium. Fax: +32-4-365.74.56 <francais. [email protected]> projeto de Gradua~ao Faculdade Tuiuti Orientador: Roberto Ultima http http Atualiza9ao: do Neia Curso de Tecnologia em Informatica Amaral Prot6tipo: 10/11/2006 '} unit PingTstl; interface I'lindows, Messages, SysUtils, Ping, StdCtrls, Menus, DB, DBIProcs, Form_Banco; type TPingTstForm = class (TForm) Ping1: TPing; MainMenul: TMainMenu; Cadastrol: TMenultem; Nl: TMenultem; Gruposl: TMenuItem; Ferramentasl: TMenuItem; Histricosl: TMenuItem; Porgrupol: TMenuItem; N4: TMenuI tern; Classes, DBTables, Graphics, ExtCtrls, Controls, ComCtrls, Forms, Grids, Dialogs, DBGrids, 98 Perodal: TMenultem; N3: TMenultem; sair2: TMenultem; PageControll: TPageControl; TabSheetl: TTabSheet; TabSheet2: TTabSheet; Bevell: TBevel; Beve12: TBevel; StatusBarl: TStatusBar; TimerAtivo: TTimer; TimerGrupo: TTimer; GroupBoxl: TGroupBox; Hos tEdi t: rEcti t; PingButton: TButton; CancelButton: TButton; GroupBox3: TGroupBox; ComboBoxl: TComboBox; GroupBox5: TGroupBax; DysplayMemoGrupo: TMemo; PingButtonGrupo: TButton; CancelButtonGrupo: TButton; GroupBox2: TGroupBox; DisplayMemo: THeme; procedure PingButtonClick(Sender: TObject); procedure PinglDisplay(Sender: TObject; Iemp: TObject; Msg: String); procedure PinglDnsLookupDone(Sender: TObject; Error: vlord) i procedure CancelButtonClick (Sender: TObject) i procedure PinglEchoReply(Sender: TObject; Icmp: TObject; Status: Integer) ; procedure NIClick(Sender: TObject); procedure Grupos lClick (Sender: TObject) ; procedure SairlClick: (Sender: TObject); procedure sair2Click{Sender: TObject); procedure PerodolClick (Sender: TObject); procedure TimerAti voTimer (Sender: TObject); procedure ComboBoxlChange (Sender: TObject); procedure PingButtonGrupoClick (Sender: TObject); procedure CancelButtonGrupoClick{Sender: TObject); procedure TimerGrupoTimer (Sender: TObject); procedure PorgrupolClick (Sender: TObject) ; procedure PageControllChange (Sender: TObject); procedure ComboBoxlDropDown (Sender: TObject); end; var PingTstForm: implement TPingTstForm; a t ion uses Form CadastroComputadores, Form _ Rela torioAti vo; iSR '", " Form_ CadGrupos, Form _ Rela tor ioPeriodo, *.DFM) , procedure TPingTstForm. PingButtonClick begin / / quando clicado no botao TESTAR if HostEdit Text <> I, then begin (Sender: TObject); 99 PingButton. Enabled CancelButton.Enabled TimerAtivo Enabled end; end; ; •• false; := true; := true; / / 1/ II desabilita habilita executa 0 batao TESTAR 0 batao PARAR 0 componente timer INDIVIDUAL · .} procedure TPingTstE'orm. PinglDnsLookupDone (Sender: TObject; Error: begin / I S8 naa alcancar 0 atlva de rede no tempo determinado adiona componente meme / / e envia 0 resul tado para 0 componente PING if Error <> 0 then begin Disp!ayMemo.Lines.Add('Host:' + HostEdit.Text + I l'lord); Inacessi vel') ; Exit; end; Ping!. Address Pingl.Ping; end; · {*""..,,, :- .• "" Pingl. .• *" .} procedure TPingTstForm. String) i begin DisplayMemo. Lines end; DnsResul t; *"" *" * . Add (Msg); {' •• , •••••••••• · {* , ••• * • * • * •• recebe realiza (Sender: /Iadiciona , •••• CancelButtonClick para verificar result Iemp: ado TObject; no campo Msg: memo , •• * • (Sender: II desabilita := true; := false: II II habilita desabilita * * ••• TObject; 0 : = false; , 0 endereco 0 ping *""" PinglDisplay '} procedure TPingTstForm. begin TimerAti vo. Enabled INDIVIDUAL PingButton.Enabled CancelButton.Enabled end; * /1 1/ TObject) 0 0 componente i timer botao TESTAR 0 botao PARAR * * ••••••••••• , , *} procedure TPingTstForm. PinglEchoReply ( Sender TObject; Icmp TObject: Status Integer); I I componente que retorna 0 echo do ping begin if Status <> 0 then I I conseguiu atingir 0 ativo de rede ( Success ) DisplayMemo.Lines.Add('IP: ' + Ping1.HostIP + ' Tamanho do pacote: ' + IntToStr (Pingl. Reply. DataSize) + +IntToStr(Ping1.Reply.RT'l') + ' ms') else I I nao atingiu 0 ativo de rede ( Failure ) DisplayMemo.Lines.Add('IP: ' + Pingl HostIP + ' - Inacessivel'); end; • , • , 100 {.. •.. ~ + '" • •.. .• •.. '" •. •.. " •.. I< •. ••. ••• ••. • '1 procedure TPingTstForm. begin / I chama 0 formulario FormCadastroComputadores end; NIClick de (Sender: TObject); cadastro ativo . ShowModal; procedure TPingTstForm. GruposlClick begin / I chama 0 formulario de cadastro FormCadGrupos. ShowModal; end; (Sender: atlvo procedure TPingTstForm.5airlCllck(Sender: begin / /encerra a aplica~ao Applica tion. Terminate; end; procedure begin TPingTstForm. Ilencerra Applica end; sair2Click de redes TObject); de redes TObject); (Sender: TObject); a aplicac;ao tion. Termina te; procedure TPingTstForm. begin / /chama 0 formulario FormRelatorioPeriodo. end; PerodolClick (Sender: com a apcao ShowModal; de TObject); relatorio por periodo procedure TPingTstForm. TimerAtivoTimer (Sender: TObject); begin / / chama 0 componente ping passando como parametro 0 conteudo do campo hostedit / / este componente ficara em looping ate 0 botao parar seja acionadp / / neste componente TIMER 0 tempo foi padronizado em 2000 mili segundos Pingl. DnsLookup (HostEdit. Text); Banco. Query. Close; / / set a query para trabalhar com 0 grupo Banco.Query. DataSource : = Banco. DSGrupo; Banco.Query.Open; Banco.Query. SQL. Clear; / / iosere as variaveis HOST, PACOTE, RESPOSTA, DATA na tabela TB_HISTORICO / / caracter B4 e igua aspas simples Banco.Query. SQL.ADD ( 'INSERT INTO tb historico (Host, Pacote, Resposta, Data, Hora) VALUES (' +1i34+HostEdit. Text+1i34+', •+n34+ IntToStr (Ping!. Reply. DataSize) +#34+', '+#34+ IntToStr (Pingl. Reply.RTT) +#34+', '+#34+DateToStr (now) +1134+', '+1t34+TimeToStr (now) +#34+') ') ; Banco.Query.Open; end; procedure TPingTstForm. ComboBoxlChange (Sender: TObject); begin 1/ / / Traz todos os ativos de rede conteudo do campo comboboxl que forem do grupo escolhido atraves do 101 Banco. Query. Close; Banco. Query. SQL. Clear; Banco.Query.SQL.Add( 'SELECT cod grupo=' +ComboBoxl. Text+' I ) Banco .Query. Open: end; FROM tb_computadores procedure TPingTstForm. PingButtonGrupoClick begin if comboboxl. Text <> .' then begin PingButtonGrupo. Enabled false; CancelButtonGrupo. Enabled : = true; TimerGrupo. Enabled : = true; end; end; /1 procedure TPingTstForm.Cance18uttonGrupoClick begin PingButtonGrupo.Enabled := true: CancelButtonGrupo.Enabled := false; TimerGrupo.Enabled := false; end; II II procedure TPingTstForm. WHERE ; TimerGrupoTimer (Sender: / / / / desabilita habilita executa TObject); 0 batao TESTAR a batao PARAR 0 componente T!MERGRUPO (Sender: II habilita desabilita executa (Sender: TObject) i 0 batao TESTAR 0 batao PARAR a componente TIMERGRUPO TObj ect) ; IP String: begin / / Traz todos as ativos de rede que forem do grupo escolhido atraves do / / conteudo do campo comboboxl I I neste componente TIMER a tempo foi padronizado em 2000 nili segundos Banco. Query. Close; Banco.Query. SQL.Clear; Banco.Query. SQL.Add(' SELECT .•. FROM tb_cornputadores I'IHERE cod grupo=' +CornboBoxl. Text+' ') ; Banco. Query. Open: /I posiciona no primeiro registro da selecao Banco. Query. First; 1/ executa todos os ativos de rede do grupo while not Banco.Query.Eof do begin IP :'" Banco.Query.Fields[4j.AsString; II pega a conteudo do IP Pingl.DnsLookup(IP); II executa 0 componente ping 1/ insere as variaveis HOST, PACOTE, RESPOSTA, DATA na tabela TB_HISTORICO / / caracter #34 e igual aspas simples Banco. Queryl. Close; Banco. Queryl. SQL. Clear; Banco.Queryl.SQL.ADD( 'INSERT INTO tb historico (Host, Pacote, Resposta, Data, l-!ora)VALUES('+#34+IP+#34+'~ '+#34+ IntToStr (Pingl. Reply. DataSize) +#34+', '+#34+ IntToStr (Pingl. Reply. RTT) +#34+', '+#34+DateToStr (now) +#34+', '+#34+TimeToStr (now) +#34+') ') ; Banco. Queryl.Open; Banco. Query. Next; end; end; procedure TPingTstForm. begin / /chama 0 formulario FormRelatorioAtivo. PorgrupolClick com a opcao ShowModal; (Sender; de relatorio TObject); par ativo de rede 102 end; procedure TPingTs tForm. PageControllChange (Sender: TObj ect) ; begin 1/ 1 impa 0 campo memo Displayt-lemo. Clear; end; TPingTstForm.ComboBoxlDropDown (Sender: e adiciona ComboBoxl. Items. Clear; Banco. tb grupo. First; while not Banco. tb_Grupo. Eat begin ComboBoxl. Items. Add (Banco Banco tb _Grupo. Next; end; end; end. TObj ect) no ; componente combobox ( I Cod_grupo ') .AsString) do tb_Grupo FieldsyName ;