O SNMP e um protocolo bastante utilizado em sistemas voltados para gerencia e administracao permitindo coletar as mais variadas informacoes de servidores, equipamentos de telecomunicacoes ou qualquer outro equipamento que o implemente. De maneira geral quando o equipamento implementa pelo menos duas RFCs ja e suficiente para coletarmos a maioria das metricas basicas. Sao elas a RFC1213 ou MIBII e a RFC2790 ou Host Resources MIB. Estas duas RFCs permitem o monitoramento de informacoes relativas a rede e aos recursos do equipamento como cpu, memoria, disco, entre outras.Com tantas metricas e possibilidades de monitoramento utilizando este protocolo, algumas vezes me deparo (acredito que nao so eu) com solicitacoes para criacoes de scripts para coleta de informacoes. Antes eu simplesmente os criava me utilizando da facilidade de jogar o conteudo de um comando executado para dentro de uma variavel. Isso pode ser feito sem problemas, porem voce fica dependente de que aquele aplicativo esteja instalado no sistema. Pensando em criar algo utilizando uma forma mais elegante, comecei a tentar utilizar o modulo do Perl chamado de Net::SNMP. Este modulo voce tambem precisa instala-lo, mas eu penso que o resultado final de um script fica bem mais profissional. Pois bem, no link acima voce podera dar uma olhada em suas possibilidades.Quando eu fiz minhas primeiras tentativas de utilizar este modulo nao consegui faze-lo da forma correta e nem entender corretamente seu funcionamento. Apos comprar os livros que citei no meu artigo anterior, principalmente o primeiro que ja esta comigo a algum tempo, consegui ter um entendimento melhor sobre a linguagem e por fim consegui usa-lo. Vi que esta dificuldade nao foi somente comigo, inclusive amigos de trabalho acabaram por optar pela velha e tradicional forma de coletar estas informacoes, jogar o conteudo de um comando para dentro de uma variavel.Entao vamos por a mao na massa. Vamos comecar a criar nosso script em Perl para coletar algumas informacoes:use strict;use Data::Dumper;use Net::SNMP;Estas linhas irao compor a parte inicial do seu script. Gosto de usar a primeira (use strict;) pois ela te obriga a ter uma forma de programar mais organizada. A segunda (use Data::Dumper;) permite analisarmos a estrutura de um hash e a terceira e o modulo que iremos utilizar para trabalhar aqui. Caso alguma destes modulos nao exista voce recebera uma mensagem de erro no momento de executar o script. Agora vamos criar uma lista de OIDs que vamos coletar e criar a sessao para coleta SNMP:my @oids = qw/1.3.6.1.2.1.1.3.0 1.3.6.1.2.1.1.5.0 1.3.6.1.2.1.1.6.0/;my ($session, $error) = Net::SNMP->session(-hostname => 'localhost',-port => '161',-community => 'public',);Neste bloco fizemos o seguinte. Definimos os OIDs que vamos coletar (que sao respectivamente sysUpTime, sysName e sysLocation) e definimos de quem iremos coletar. Agora vamos executar nossa leitura nos OIDs que definimos na lista no passo anterior e visualizar os resultados:my $result = $session->get_request( -varbindlist => \@oids,);$session->close();print Dumper \%{$result};Com estes comandos voce devera ver algo como o seguinte:$VAR1 = { '1.3.6.1.2.1.1.6.0' => 'Qualquer Lugar', '1.3.6.1.2.1.1.5.0' => 'andre-sti', '1.3.6.1.2.1.1.3.0' => '51 minutes, 30.01' };Com isso podemos ver os resultados que coletamos via SNMP nos OIDs que definimos no primeiro passo. Aquele "print Dumper