Red de Respuestas Legales - Derecho empresarial - ¿Cómo recopila información net-snmp?

¿Cómo recopila información net-snmp?

Compilar net-snmp en Windows es realmente muy simple. Utilizo la versión net-snmp5.2.1.2. Simplemente compile los proyectos de varias bibliotecas en el directorio win32 bajo el código fuente. Pero recuerde, compile netsnmp.lib al final; de lo contrario, los resultados de la compilación serán diferentes. Recuerde, recuerde. Luego use los cuatro archivos de biblioteca compilados: netsnmp.lib, netsnmpagent.lib, netsnmphelpers.lib, netsnmpmibs.lib para compilar netsnmp.dll. Tenga en cuenta que también se debe agregar wsock32.lib. Si se produce un error de compilación y se le indica que hay un conflicto con la biblioteca predeterminada de VC, siga las indicaciones y use NODEFAULTLIB:XXX en el entorno de compilación para eliminar el archivo de la biblioteca predeterminada de VC.

A continuación se presentan varios programas de ejemplo. Los códigos fuente de los ejemplos se pueden descargar desde el hipervínculo de ayuda de net-snmp a su sitio web.

1 Compile el ejemplo example-demon;

p>

#include

#include

# include

#include

#include "nstAgentSubagentObject.h"

static int keep_running;

RETSIGTYPE

stop_server(int a) {

keep_running = 0;

}

int

main(int argc, char *argv[])

{

int agentx_subagent=0 /* cambiar esto; si desea ser un agente maestro SNMP */

/*Para compilar y convertirse en el agente maestro, configúrelo en 0*/

int background = 0 /*; cambie esto si desea ejecutar en segundo plano */

int syslog = 0 /* cambie esto si desea utilizar syslog */

/* imprime errores de registro en syslog o stderr */

if (syslog)

snmp_enable_calllog();

else

snmp_enable_stderrlog();

/* ¿somos un subagente de agentx? */

if (agentx_subagent) {

/* conviértenos en un cliente de agentx */

netsnmp_ds_set_boolean. (NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1) ;

}

/* ejecutar en segundo plano, si se solicita */

if (fondo && netsnmp_daemonize(1, !syslog ))

exit(1);

/* inicializa tcpip, si es necesario */

SOCK_STARTUP;

/* inicializa el biblioteca de agentes */

init_agent("example-demon");

/* inicializa el código mib aquí */

/* código mib: init_nstAgentSubagentObject de nstAgentSubagentO

bject.C */

init_nstAgentSubagentObject();

/* inicializa el control de acceso vacm/usm */

if (!agentx_subagent) {

void init_vacm_vars();/*---------------Pequeña modificación---------------*/

void init_usmUser();

}

/* example-demon se utilizará para leer archivos example-demon.conf */

/* A. El archivo de configuración llamado example-demon.conf se leerá aquí - key*/

init_snmp("example-demon");

/* Si vamos a ser un snmp agente maestro, inicialice los puertos */

if (!agentx_subagent)

init_master_agent() /* abra el puerto para escuchar (el valor predeterminado es udp:161) * /

/* En caso de que recibamos una solicitud para detener (kill -TERM o kill -INT) */

keep_running = 1;

signal(SIGTERM , stop_server) ;

signal(SIGINT, stop_server);

snmp_log(LOG_INFO,"example-demon está funcionando.\n");

/* tu bucle principal aquí... */

while(keep_running) {

/* si usa select(), consulte snmp_select_info() en snmp_api(3) */

/* --- O --- */

agent_check_and_process(1); /* 0 == no bloquear */

}

/* en el momento del apagado */

snmp_shutdown("example-demon");

SOCK_CLEANUP;

devuelve 0;

p>

}

Aquí hay comentarios muy detallados, así que no los explicaré aquí.

En el proyecto vc, agregue los archivos de biblioteca mib de ejemplo nstAgentSubagentObject.h y nstAgentSubagentObject.c utilizados. Y configure los cuatro archivos de biblioteca necesarios, como se mencionó al principio del artículo, para ver si necesita agregar wsock32.lib y NODEFAULTLIB. Luego debería compilarse y pasar sin errores ni advertencias.

2. Acerca de la ejecución

Para ejecutar, debe establecer la ruta del archivo de configuración. Lo mejor es descargar el paquete binario NET-SNMP e instalar C:\USR. la ruta predeterminada. Durante la instalación, se le solicitará que descargue un paquete de instalación de PERL para ejecutar la herramienta mib2c, que se presenta en línea.

El archivo de configuración es válido si se coloca en

c:\, c:\usr\etc\snmp o C:\usr\share\snmp. Pero si está ejecutando el programa agente principal de ejemplo, encontrará el archivo de configuración en el directorio etc. El archivo de configuración del ejemplo debe tener el mismo nombre que el inicializado en init_snmp("example-demon");: example-demon.conf. Basta con establecer dos valores en el archivo de configuración:

La lectura y escritura de #community se configura según sea necesario, aquí se establece en solo lectura

rocommunity public

dirección del agente 161

Además, si está ejecutando un paquete binario, no modifique el archivo snmp.conf manualmente. Debe generarse a través de snmpconf. La modificación manual no parece funcionar. La configuración del programa de ejemplo se puede establecer manualmente.

Finalmente, coloque example-demon.conf en c:\usr\etc\snmp. Apague el servicio snmpd.exe del paquete binario (si se está ejecutando). Luego ejecute ejemplo-demon.exe. En circunstancias normales, si el paquete binario está instalado, el ejemplo se puede ejecutar en el directorio de compilación. De lo contrario, copie netsnmp.dll o coloque el ejemplo directamente en el directorio bin del paquete binario. Si hay algún problema, verifique la ruta y la configuración del archivo de configuración. Lo mejor es descargar un software de gestión llamado getif, que es una herramienta de consulta cómoda y compacta, para realizar pruebas paralelas.

3. Compile su propia biblioteca mib

La primera forma es generar un marco de plantilla a través de mib2c y agregar punteros de importación de datos y otros en lugares relevantes.

Para el segundo tipo, consulte nstAgentSubagentObject.c.

Para el tercer método, consulte varios métodos de implementación en net-snmp-xxx\agent\mibgroup\examples.

Resumen

Principalmente configuración del entorno, orden de compilación de la biblioteca y configuración del archivo de configuración. Básicamente, no hay gran problema con los ejemplos de referencia.