windows下使用net-snmp实现agent扩展(一)
来源:互联网 发布:淘宝耐克正品店铺 贴吧 编辑:程序博客网 时间:2024/05/21 09:42
项目上需要用snmp来做告警监控管理,达到对系统的运行状态的监测。这几天研究了一下,发现网上资料比较少,大多数抄来抄去,能够正确运行的更少。所以,总结了一下,把相关的代码放上来,希望能够帮助同样遇到困惑的朋友。 havenzhao http://vcsky.net
nstAgentSubagentObject.h
nstAgentSubagentObject.c
- #include <net-snmp/net-snmp-config.h>
- #include <net-snmp/net-snmp-includes.h>
- #include <net-snmp/agent/net-snmp-agent-includes.h>
- #include <signal.h>
- #include "nstAgentSubagentObject.h"
- static int keep_running;
- RETSIGTYPE
- stop_server(int a) {
- keep_running = 0;
- }
- int main (int argc, char **argv) {
- //int agentx_subagent=1; /* change this if you want to be a SNMP master agent */
- int agentx_subagent=0;
- int background = 0; /* change this if you want to run in the background */
- int syslog = 0; /* change this if you want to use syslog */
- /* print log errors to syslog or stderr */
- if (syslog)
- ;
- //snmp_enable_calllog();
- else
- snmp_enable_stderrlog();
- /* we're an agentx subagent? */
- if (agentx_subagent) {
- /* make us a agentx client. */
- netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
- }
- /* run in background, if requested */
- if (background && netsnmp_daemonize(1, !syslog))
- exit(1);
- /* initialize tcpip, if necessary */
- SOCK_STARTUP;
- /* initialize the agent library */
- init_agent("example-demon");
- /* initialize mib code here */
- /* mib code: init_nstAgentSubagentObject from nstAgentSubagentObject.C */
- init_nstAgentSubagentObject();
- /* initialize vacm/usm access control */
- if (!agentx_subagent) {
- init_vacm_vars();
- init_usmUser();
- }
- /* example-demon will be used to read example-demon.conf files. */
- /*在这里读取一个example-demon.conf的配置文件,这是关键*/
- init_snmp("example-demon");
- /* If we're going to be a snmp master agent, initial the ports */
- if (!agentx_subagent)
- init_master_agent(); /* open the port to listen on (defaults to udp:161) */
- /* In case we recevie a request to stop (kill -TERM or kill -INT) */
- keep_running = 1;
- signal(SIGTERM, stop_server);
- signal(SIGINT, stop_server);
- snmp_log(LOG_INFO,"example-demon is up and running.\n");
- /* your main loop here... */
- while(keep_running) {
- /* if you use select(), see snmp_select_info() in snmp_api(3) */
- /* --- OR --- */
- agent_check_and_process(1); /* 0 == don't block */
- }
- /* at shutdown time */
- snmp_shutdown("example-demon");
- SOCK_CLEANUP;
- return 0;
- }
nstAgentSubagentObject.h
- /*
- * Note: this file originally auto-generated by mib2c using
- * : mib2c.int_watch.conf,v 5.0 2002/04/20 07:30:13 hardaker Exp $
- */
- #ifndef NSTAGENTSUBAGENTOBJECT_H
- #define NSTAGENTSUBAGENTOBJECT_H
- /*
- * function declarations
- */
- void init_nstAgentSubagentObject(void);
- #endif /* NSTAGENTSUBAGENTOBJECT_H */
nstAgentSubagentObject.c
- /*
- * Note: this file originally auto-generated by mib2c using
- * : mib2c.int_watch.conf,v 5.0 2002/04/20 07:30:13 hardaker Exp $
- */
- #include <net-snmp/net-snmp-config.h>
- #include <net-snmp/net-snmp-includes.h>
- #include <net-snmp/agent/net-snmp-agent-includes.h>
- #include "nstAgentSubagentObject.h"
- /*
- * the variable we want to tie an OID to. The agent will handle all
- * * GET and SET requests to this variable changing it's value as needed.
- */
- static int nstAgentSubagentObject = 6;
- /*
- * our initialization routine, automatically called by the agent
- * (to get called, the function name must match init_FILENAME())
- */
- void
- init_nstAgentSubagentObject(void)
- {
- static oid nstAgentSubagentObject_oid[] =
- { 1, 3, 6, 1, 4, 1, 8072, 2, 4, 1, 1, 2, 0 };
- /*
- * a debugging statement. Run the agent with -DnstAgentSubagentObject to see
- * the output of this debugging statement.
- */
- DEBUGMSGTL(("nstAgentSubagentObject",
- "Initializing the nstAgentSubagentObject module\n"));
- /*
- * the line below registers our variables defined above as
- * accessible and makes it writable. A read only version of any
- * of these registration would merely call
- * register_read_only_int_instance() instead. The functions
- * called below should be consistent with your MIB, however.
- *
- * If we wanted a callback when the value was retrieved or set
- * (even though the details of doing this are handled for you),
- * you could change the NULL pointer below to a valid handler
- * function.
- */
- DEBUGMSGTL(("nstAgentSubagentObject",
- "Initalizing nstAgentSubagentObject scalar integer. Default value = %d\n",
- nstAgentSubagentObject));
- netsnmp_register_int_instance("nstAgentSubagentObject",
- nstAgentSubagentObject_oid,
- OID_LENGTH(nstAgentSubagentObject_oid),
- &nstAgentSubagentObject, NULL);
- DEBUGMSGTL(("nstAgentSubagentObject",
- "Done initalizing nstAgentSubagentObject module\n"));
- }
阅读全文
0 0
- windows下使用net-snmp实现agent扩展(一)
- windows下使用net-snmp实现agent扩展(一)
- windows下使用net-snmp实现agent扩展(二)
- windows下使用net-snmp实现agent扩展(三)
- windows下使用net-snmp实现agent扩展(四)
- windows下使用net-snmp实现agent扩展(二)
- windows下使用net-snmp实现agent扩展(三)
- windows下使用net-snmp实现agent扩展(四)
- Net-snmp agent扩展
- Net-snmp 使用c 扩展 sub-agent
- Linux下基于net-snmp的Agent扩展开发
- linux net-snmp agent manager windows snmp
- net-snmp agent开发(用net-snmp扩展MIB库)
- Windows下使用net-snmp-5.4.1扩展代理所遇问题及解决
- 自定义SNMP Agent扩展
- Snmp Agent扩展
- windows 平台如何实现snmp agent?
- 使用net-snmp做自己的agent
- BZOJ 3036 绿豆蛙的归宿
- 不知道说点什么才好
- 在线将chm转为pdf
- 源码编译安装gcc-5.3.0
- 大字段的设置--lobHandler
- windows下使用net-snmp实现agent扩展(一)
- java基础知识(一)
- 数据库基础 (关系数据库)
- PHPStorm 配置运行PHP项目
- CXF发布restful WebService的入门例子(服务器端)
- windows下使用net-snmp实现agent扩展(二)
- Spark基础-Scala集合操作
- JNI开发基础系列--开启JNI线程
- windows下使用net-snmp实现agent扩展(三)