SNMP em Linux embarcado
O SNMP (Simple Network Management Protocol) é usado para monitorar, gerenciar e configurar dispositivos de rede em um ambiente conectado. Ele é amplamente adotado em redes devido à sua simplicidade e eficiência. Aqui estão suas principais funções:
- Monitoramento de Dispositivos: O SNMP coleta informações sobre o desempenho e o estado de dispositivos, como roteadores, switches, servidores, impressoras, etc.
- Configuração Remota: Permite alterar configurações de dispositivos sem a necessidade de interação direta, facilitando a gestão de redes grandes e complexas.
- Identificação de Problemas: O SNMP pode gerar alertas sobre falhas ou problemas de desempenho em dispositivos, ajudando na detecção e resolução proativa.
- Gestão Centralizada: Ele fornece uma visão consolidada de toda a infraestrutura de rede por meio de sistemas de gerenciamento, como o Nagios ou Zabbix.
Por exemplo, com o SNMP, é possível verificar o uso de CPU de um servidor, status de interfaces de rede, níveis de temperatura, entre outros parâmetros, tudo remotamente. É uma ferramenta essencial para administradores de redes que precisam de eficiência e controle. Abaixo, apresento-lhes um guia de implementação e testes do SNMP em uma raspberry pi modelo 2B
Guia de Implementação e Testes do SNMP em uma Raspberry Pi Modelo 2B Usando C++
Pré-requisitos
Antes de iniciar, certifique-se de ter o seguinte:
- Raspberry Pi Modelo 2B com o sistema operacional Raspberry Pi OS instalado.
- Acesso à Raspberry Pi via SSH a partir de um PC com Windows.
- Conhecimento básico de C++ e redes.
- Biblioteca Net-SNMP instalada na Raspberry Pi.
Etapa 1: Instalação do Net-SNMP
- Atualize os pacotes existentes:
sudo apt update && sudo apt upgrade -y
- Instale o Net-SNMP e as bibliotecas de desenvolvimento:
sudo apt install snmp snmpd libsnmp-dev -y
- Verifique a instalação:
snmpd --version
Etapa 2: Configuração do Agente SNMP
- Edite o arquivo de configuração do agente SNMP:
sudo nano /etc/snmp/snmpd.conf
- Ajuste as seguintes linhas:
- Comente a linha abaixo:
#agentAddress udp:127.0.0.1:161
- Adicione:
agentAddress udp:161,udp6:[::1]:161
- Defina permissões básicas:
Procure pela linha abaixo no arquivo e edite-a para ficar dessa forma
rocommunity public 127.0.0.1
Reinicie o serviço SNMP:
sudo systemctl restart snmpd
Etapa 3: Criando o Código em C++
O objetivo aqui é implementar um cliente SNMP que se conectará ao agente SNMP na Raspberry Pi.
- Instale um compilador C++ se ainda não o tiver:
sudo apt install g++ -y
- Crie um arquivo para o programa cliente SNMP:
nano snmp_client.cpp
- Adicione o seguinte código:
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <iostream>
int main() {
const char *peername = "127.0.0.1"; // IP da Raspberry Pi
const char *community = "public"; // Comunidade SNMP
// Inicialização do SNMP
init_snmp("SNMPClient");
// Configuração da sessão
struct snmp_session session, *ss;
snmp_sess_init(&session);
session.peername = strdup(peername);
session.community = (u_char *)community;
session.community_len = strlen(community);
session.version = SNMP_VERSION_2c;
// Conectando ao agente SNMP
ss = snmp_open(&session);
if (!ss) {
snmp_perror("Erro ao conectar");
return 1;
}
std::cout << "Conexão SNMP estabelecida com sucesso!" << std::endl;
// Finalização
snmp_close(ss);
return 0;
}
- Compile o programa:
g++ snmp_client.cpp -o snmp_client -lnetsnmp
- Execute o cliente SNMP:
./snmp_client
Se o cliente conectar-se com sucesso ao agente SNMP, uma mensagem será exibida!