NET-SNMP服务端添加自定义节点
- 格式:doc
- 大小:183.50 KB
- 文档页数:12
NET-SNMP代理配置手册中文版译者:ioerr2010年7月19日原文属于windows版net-snmp 5.5.0版自带chm文档中的snmpd.conf部分,如果大家在类unix环境中使用,可能会有区别。
从5月21日开始翻译到现在差不多2个月,校稿一次,实在没有心力校稿第二次了,呵呵。
费了这半天劲希望对大家有所帮助,如果发现翻译有错误欢迎发邮件:ZHL98040011@,我会立即更正,以便大家参考。
大家可以随意转发,但请带上俺的名字ioerr,每当我在别的网站看见我翻译的文档,心中之得意…嘿嘿:D。
但请勿用于商业用途,否则后果自负。
还有下面几个文档在我的博客上(/ioerr),欢迎参考。
MRTG配置参考手册NTOP中文手册openBSD 4.2 packages 和ports系统SNMPD.CONF(5) Net-SNMP SNMPD.CONF(5)名称snmpd.conf - Net-SNMP's snmp代理的配置文件描述Net-SNMP代理使用一个或者更多个配置文件来控制它的运行和提供管理信息。
这些配置文件(snmpd.conf和snmpd.local.conf)位于snmp_config(5)手册页指出的目录中。
snmpconf(是一个perl脚本程序)可以为snmp代理生成最常用的配置文件。
查看snmpconf(1)来获取进一步的详细信息,或者尝试运行命令:snmpconf -g basic_setup这里有大量的指令可以指定,绝多数可以被划入四个大类:* 用户访问控制类* 控制代理提供信息类* 本地系统监控类* 代理功能扩展类有一些指令不能自然的划入这四类中,但是这四类这些指令包括了典型的snmpd.conf 配置文件的主要部分。
全部指令请运行以下命令来获得:snmpd –H代理行为控制虽然绝大多数指令与代理提供的MIB包含的信息有关,但还有一些指令用于控制snmpd代理本身--通常它被认为是一个提供服务的守护进程。
SNMP节点添加/*****************************************************************************/ /*****************************************************************************/ //lwip中的SNMP为1.0版本。
本人用的lwip1.3版本。
//主要包括6个文件//1.asn1_dec.c-----snmp包解析处理//2.asn1_enc.c-----snmp包组合处理//3.mib2.c -----snmp中的mib树//4.mib_structs.c -----sanmp中对mib树的操作(包括查找,添加,删除等)//5.msg_in.c ----snmp接收包的处理//6.msg_out.c ---snmp发送包的处理//设置步骤//(1)#include “lwipopts.h”#define LWIP_SNMP 1//(2)In the lwIP initialisation sequence callsnmp_init();//(3)增加自己私有mib树,参考源码如下//例如增加1.3.6.1.4.1.28318.1.0, 1.3.6.1.4.1.28318.2.0 两个节点/*****************************************************************************/ /*****************************************************************************/ /** MIB const scalar (.0) node */ //常量标量节点#define MIB_NODE_SC 0x01/** MIB const array node */ //常量数组节点#define MIB_NODE_AR 0x02/** MIB array node (mem_malloced from RAM) */ //数组节点#define MIB_NODE_RA 0x03/** MIB list root node (mem_malloced from RAM) */ //列表根节点#define MIB_NODE_LR 0x04/** MIB node for external objects */ //外部对象节点#define MIB_NODE_EX 0x05/*****************************************************************************/ /*****************************************************************************/ const mib_scalar_node accelink_scalar = {&accelink_get_object_def,&accelink_get_value,&accelink_set_test,&accelink_set_value,MIB_NODE_SC,};//1.3.6.1.4.1.28318const s32_t accelink_ids[2] = { 1, 2};struct mib_node* const accelink_nodes[2] = {(struct mib_node* const)&accelink_scalar, (struct mib_node* const)&accelink_scalar};const struct mib_array_node accelink = {&noleafs_get_object_def,&noleafs_get_value,&noleafs_set_test,&noleafs_set_value,MIB_NODE_AR,2,accelink_ids,accelink_nodes};//1.3.6.1.4.1const s32_t enterprises_ids[1] = {28318};struct mib_node* const enterprises_nodes[1] = { (struct mib_node* const)&accelink};const struct mib_array_node enterprises = {&noleafs_get_object_def,&noleafs_get_value,&noleafs_set_test,&noleafs_set_value,MIB_NODE_AR,1,enterprises_ids,enterprises_nodes};//1.3.6.1.4const s32_t private_ids[1] = {1};struct mib_node* const private_nodes[1] = { (struct mib_node* const)&enterprises};const struct mib_array_node private = {&noleafs_get_object_def,&noleafs_get_value,&noleafs_set_test,&noleafs_set_value,MIB_NODE_AR,1,private_ids,private_nodes};/*****************************************************************************/ /*****************************************************************************/ //除以上添加以外还需要修改相应的get与set函数;。
Net-snmp安装配置总结以下内容这只涉及到了net-snmp的一些宏观方面的操作和应用,并没有说明具体开发相关事宜。
而且目前很强烈的感觉到,针对net-snmp具体开发的文档太少,所以行走起来很艰辛,因此仍然有很长的路要走,靠时间去积累!我以我的经历简单概述总结,希望这对初学者有帮助~一:安装net-snmp1.解压文件:cd /usr/srctar –zxv –f net-snmp-5.7.2.tar.gz2.配置makefile./configure--prefix=/usr/local/net-snmp--enable-mfd-rewrites--with-default-snmp-version="2c"--with-sys-contact="xxx@"--with-sys-location="China"--with-logfile="/var/log/snmpd.log"--with-persistent-directory="/var/net-snmp"解释:prefix:net-snmp将要安装的路径enable-mfd-rewrites:允许用新的MFD重写可用的mid模块with-default-snmp-version:默认的SNMP版本with-sys-contact:可以配置该设备的联系人with-sys-location:该设备的位置with-logfile:日志文件路径with-persistent-directory:不变数据存储目录当然,可以根据实际需求,添加需要编译的模块,如—with-mib-modules=”xxx”3.make4.make install5.配置snmpd.conf,在/var/local/net-snmp/share/snmp目录下新建snmpd.conf文件,在里面添加如下内容:syslocation Chinasyscontact xxx@rocommunity publicrwcommunity whoareyou6.设置net-snmp自启动:在/etc/rc.local文件末尾加入以下代码/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf &7.设置环境变量在/etc/profile末尾加入以下代码PATH=/usr/local/net-snmp/bin:/usr/local/net-snmp/sbin:$PATH 使环境变量设置生效source /etc/profile8.查看snmpd是否启动:ps –ef | grep snmpd或者lsof –i:161二:添加Mib库1.将MY-MIB.txt mib库拷到/var/local/net-snmp/share/snmp/mibs目录2.添加环境变量。
SNMP配置说明一.配置说明修改配置文件的目的是为了添加代理用户1.MIB version说明:net-snmp代理支持v1, v2c, v3版本,可根据管理侧的版本信息自适应回复相同版本格式的回复。
无需配置。
Mib节点项:无2.Trap community说明:trap共同体,适用于v1/v2c版本。
管理侧侧只有在配置了相同的参数后才能接收到trap.配置方法:trapsink localhost public 162trap2sink 172.18.100.148 public 162以上两条配置项中,共同体名均为public。
其中第一条配置项适用于发送v1版本trap,第二条配置项适用于发送v2c版本trapMib节点项:无3.RO/RW community说明:只读/读写共同体,适用于v1/v2c版本。
管理侧和代理侧在配置了相同的共同体参数后,管理侧才可以对代理侧进行读取或者设置操作。
配置方法:com2sec get default publiccom2sec set default netman只读共同体设置为public, 读写共同体设置为netman。
此配置需要与group和access配置共同使用实现只读/读写功能。
Mib节点项:无4.SNMP Engine ID说明:SNMP引擎标识,适用于v3版本。
SnmpEngineID值可指定也通过某种算法计算得到,目的是为了标识唯一一个SNMP实体。
在net-snmp中是通过计算生成的,使用如下的方法:SnmpEnglineID长度为12个字节,最高bit设置为1,表示使用框架定义的方法(如果为0表示企业定义)。
前4个字节设为生产代理的企业标识(prvate.enterprise下的企业标识,同IANA分配),如ECI的企业标识为1286。
其他8个字节通过使用IP地址并在地址后面增补随机数来确定。
配置方法:修改net-snmp源代码,将NETSNMP_ENTERPRISE_OID更改为1286.Mib节点项:snmpEngineID(1.3.6.1.6.3.10.2.1.1)5.View name, oid name, include说明:VACM配置相关,适用于v1/v2c/v3版本。
关于SNMP一些工具的使用王爱华2006年11月03日1软件下载• ActivePerl(v5.8.x) 下载地址:ftp://192.168.10.160/perl/ 或者/Products/ActivePerl/• Net-SNMP(v5.3.1) 下载地址:ftp://192.168.10.160/net-snmp/ 或者 /net-snmp/ • gnu_regex.exe下载地址:ftp://192.168.10.160/net-snmp/或者/gjc/gnu_regex.html• snmptt(v1.1) 下载地址:ftp://192.168.10.160/snmptt/ 或者 /snmptt/2Perl•解压缩下载的ActivePerl-xxx.zip,比如ActivePerl-5.8.8.819-MSWin32-x86-267479.zip。
•打开Windows的命令行窗口,并切换到ActivePerl-xxx.zip解压缩后的目录。
•在Windows命令行窗口中,运行Installer.bat,并按照屏幕提示完成安装。
以上安装过程,请参考图1至图3:图 1图 2图 33Net-SNMP3.1安装Net-SNMP•运行net-snmp安装程序net-snmp-5.3.1-1.win32.exe,按照屏幕的提示完成安装。
安装时只选择net-snmp的基本组件(Base Components)和Perl SNMP模块(Perl SNMP Modules)即可。
•运行gnu_regex.exe解压缩后,将得到的gnu_regex.dll复制到%windir%\system32下。
•打开Windows命令行窗口,运行以下命令:ppm remove NetSNMPcd [NetSNMP_HOME]\Perlppm install NetSNMP.ppd其中,[NetSNMP_HOME]指net-snmp安装到的目录。
netsnmp配置LinuxSNMP的基本功能是:取得,设置和接收代理发送的意外信息。
取得指的是基站发送请求,代理根据这个请求回送相应的数据设置是基站设置管理对象(也就是代理)的值,接收收代理发送的意外信息是指代理可以在基站未请求的状态下向基站报告发生的意外情建议用RPM方式安装1. 安装: yum installnet-snmp* (主要安装net-snmpnet-snmp-devel net-snmp-utils net-snmp-libs 组件)yum install lm_sensors(用于监控主板,CPU的工作电压,风扇转速、温度等数据。
)2. 配置:主配置文件:/etc/snmp/snmpd.conf常用定义项:(1)首选是定义一个共同体名(community),这里是public (多数SNMP设备或服务默认都是是用PUBLIC),及可以访问这个public的用户名(sec name),这里是notConfigUser。
Public相当于用户notConfigUser的密码:),source在net-snmp中用来对来源IP加以控制,即哪些可以获取SNMP信息#source communitycom2secnotConfigUserdefaultpublic (2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigGroup这个用户加到这个组中。
sec.model:安全模式,可选值为v1/v2c/usm。
groupNamesecurityModelsecurityNamegroup notConfigGroupv1notConfigUser groupNamesecurityModelsecurityNamegroup notConfigGroupv1notConfigUsergroup notConfigGroupv2cnotConfigUser (3)定义一个可操作的范围(view)名,这里是all,范围是.1# name incl/exclsubtree mask(optional) viewall included.1 --》表示可以查看.1节点下的所有设备信息注:incl/excl:对下面的MIB子树是包括还是排除。
SNMP服务的配置Windows系统下SNMP服务配置的操作说明:首先在Windows的控制面板里“添加删除程序”里,添加Windows组件。
在Windows 列表里选择“管理和监视工具”,点“详细情况”,将“简单网络管理协议”选择上,然后“下一步”,进行安装。
安装SNMP组件时候需要系统安装盘,也可以指定操作系统文件的网络路径安装。
SNMP组件装好后,进行如下的设置:1.从系统桌面上“开始”菜单里选择:开始->设置->控制面版->管理工具,打开管理工具,找到“服务”菜单并打开。
2.从服务列表里找到“SNMP Service”,按右键选择“属性”,对snmp服务进行配置。
选择“属性”后出现如下配置页面:在“常规”这个选项里,保持原来的设置不变。
选择“登录”选项,显示如下页面,并保持缺省值不变。
选择“恢复”选项,出现如下页面,保持缺省值不变选择“代理”选项,出现如下页面,保持缺省值不变。
选择“陷井”,出现如下页面。
在团体名称里,填写上团体名称,比如nxepc-public,这是为了在配置监控系统时提供相应的community。
在陷井目标里,填写完类似于“nxepc-public”的团体名称后,点“添加到列表”,然后界面显示成如下状态:然后在“陷井目标”下,点“添加”按钮,出现如下输入框:在输入页面上填写监控服务器所在的地址,目前服务器所在地址为“10.216.2.248”。
填写完点“添加”按钮,此窗口关闭,原来窗口显示如下:点“安全”菜单,出现如下页面:在“接受团体名称”区域内,点“添加”按钮,出现如下页面:刚刚在“陷井”页面内输入的团体名称“nxepc-public”会自动出现在这个页面的“团体名称”里,不做任何改变,保持“团体权利”为“只读”。
点“添加”按钮,此窗口自动关闭,回复到如下页面:为了安全起见,把上页面的中下面一个区域内的选项选择到“接受来自这些主机的SNMP 包”。
NET-SNMP安装方法这篇文章我们主要讲解NET-SNMP的安装过程。
在描述NET-SNMP安装过程之前,我们先来说一下什么是SNMP。
(以下内容译自官方网站:)Simple Network Management Protocol (SNMP) 是一个被广泛使用的协议,可以监控网络设备(比如路由器)、计算机设备甚至是UPS。
Net-SNMP是用于实施SNMP v1,SNMP v2,SNMPv3的应用程序套件,可以使用在IPv4、IPv6的环境中。
这个套件包括:* 命令行程序包括:+从支持SNMP的设备中检索信息的命令。
用于执行单个的请求(snmpget,snmpgetnext),或者执行多个请求(snmpwalk,snmptable,snmpdelta)。
+可以用于手动设置信息的命令(snmpset)。
+检索一套固定信息的命令(snmpdf,snmpnetstat,snmpstatus)。
+可以把MIB oid的信息在“数字”形式和“字符”形式之间进行转换的命令(snmptranslate),它还能显示MIB的内容和结构。
*使用Tk/perl来提供一个图形化的MIB浏览器(tkmib)。
*一个接收SNMPtrap信息的daemon。
经过选择的snmp通知信息可以被日志记录(记录在syslog,或者NT的日志,或者文本文件),转发到另一个SNMP管理系统,或者传递到其它的程序。
*一个可扩展的代理程序(snmpd),用于对管理系统提出的SNMP请求做出响应。
这包括了内建的多种支持性:支持广泛的MIB信息模块,可以使用动态加载的模块进行扩展,可以使用外部的脚本和命令进行扩展,对多路复用SNMP(SMUX)和代理可扩展性协议(AgentX)的支持。
*包括一个库,用于支持对新的SNMP开发,支持C和Perl API。
Net-SNMP对于许多的UNIX和类UNIX操作系统都是支持的,也支持windows。
SNMP配置手册目录1 服务器部分 (1)1.1 LINUX服务器 (1)1.1.1 前提:检测SNMP是否已安装 (1)1.1.2 安装方法(SNMP安装包配置过程) (1)1.1.3 配置SNMP文件 (2)1.1.4 启动SNMP服务 (4)1.1.5 验证SNMP服务 (4)1.1.6 红旗LINUX(已安装自带SNMP)配置方法 (4)1.2 IBM服务器(AIX系统) (5)1.2.1 准备工作 (5)1.2.2 安装方法 (5)1.2.3 配置SNMP文件 (6)1.2.4 启动SNMP服务 (6)1.2.5 验证SNMP服务 (6)1.3 HP服务器(HP-UX系统) (7)1.3.1 准备工作 (7)1.3.2 安装方法 (7)1.3.3 配置SNMP文件 (8)1.3.4 启动SNMP服务 (8)1.3.5 验证SNMP服务 (8)1.4 SUN服务器(Solaris系统) (8)1.4.1 准备工作 (8)1.4.2 安装方法 (8)1.4.3 配置SNMP文件 (9)1.4.4 启动SNMP服务 (9)1.4.5 验证SNMP服务 (10)1.5 Windows服务器(WIN2000、WIN2003等系统) (10)1.5.1 准备工作 (10)1.5.2 安装方法 (10)1.5.3 配置SNMP服务 (12)1.5.4 启动SNMP服务 (14)2 节点监控配置 (1)1 服务器部分1.1 LINUX服务器1.1.1 前提:检测SNMP是否已安装1、确保本机已经安装了snmp服务[root@idc ~]# rpm -qa |grep snmp会出现类似以下信息:net-snmp-libs-5.1.2-11.EL4.7net-snmp-5.1.2-11.EL4.7如果没有,那么放入linux安装盘找到snmp的rpm包进行安装,或者到网上搜索适合自己linux发行版本的rpm包进行安装1.1.2 安装方法(SNMP安装包配置过程)linux安装系统盘或下载的软件包net-snmp-5.4.3.tar.gz安装SNMP相关软件包:net-snmp-5.4.3.tar.gz安装SNMP软件:# tar -zxvf /winshare/net-snmp-5.4.3.tar.gz# cd ./net-snmp-5.4.3#./configure –prefix=/usr/local/snmp//配置指定安装目录安装过程中,询问信息可直接回车,默认即可。
NET-SNMP服务端添加自定义节点NET-SNMP服务端添加自定义节点编译生成.c和.h文件后,只是一个mib节点文件模板。
1 代码修改:blue.h/** Note: this file originally auto-generated by mib2c using* : mib2c.old-api.conf 14476 2006-04-18 17:36:51Z hardaker $*/#ifndef BLUE_H#define BLUE_H/** function declarations*/void init_blue(void);FindVarMethod var_blue;WriteMethod write_bluenum;#endif /* BLUE_H */我们会发现生成的C文件,其实只是一个模版。
其中功能实现的地方,以及某些关键地方都留了空,并且有较为详细的英文注释。
只需要修改两处即可通过编译,其余部分可根据情况决定是否修改,以及如何修改。
blue.c/** Note: this file originally auto-generated by mib2c using* : mib2c.old-api.conf 14476 2006-04-18 17:36:51Z hardaker $*/#include <net-snmp/net-snmp-config.h>#include <net-snmp/net-snmp-includes.h>#include <net-snmp/agent/net-snmp-agent-includes.h>#include "blue.h"/** blue_variables_oid:* this is the top level oid that we want to register under. This* is essentially a prefix, with the suffix appearing in the* variable below.*/oid blue_variables_oid[] = { 1, 3, 6, 1, 4, 1, 1, 1 };/** variable4 blue_variables:* this variable defines function callbacks and type return information * for the blue mib section*/struct variable7 blue_variables[] = {/** magic number , variable type , ro/rw , callback fn , L, oidsuffix */#define BLUENUM 1{BLUENUM, ASN_INTEGER, RWRITE, var_blue, 1, {4}},};/** (L = length of the oidsuffix)*//** Initializes the blue module */voidinit_blue(void){DEBUGMSGTL(("blue", "Initializing\n"));/** register ourselves with the agent to handle our mib tree*/REGISTER_MIB("blue", blue_variables, variable4, blue_variables_oid);/** place any other initialization junk you need here*/}/** var_blue():* This function is called every time the agent gets a request for * a scalar variable that might be found within your mib section* registered above. It is up to you to do the right thing and* return the correct value.* You should also correct the value of "var_len" if necessary.** Please see the documentation for more information about writing * module extensions, and check out the examples in the examples* and mibII directories.*/unsigned char *var_blue(struct variable *vp,oid * name,size_t *length,int exact, size_t *var_len, WriteMethod ** write_method){/** variables we may use later*/static long long_ret;static u_long ulong_ret;static unsigned char string[SPRINT_MAX_LEN];static oid objid[MAX_OID_LEN];static struct counter64 c64;if (header_generic(vp, name, length, exact, var_len, write_method) == MATCH_FAILED)return NULL;/** this is where we do the value assignments for the mib results.*/switch (vp->magic) {case BLUENUM:*write_method = write_bluenum;VAR = VALUE; /* XXX */ /* 编译时此两处会报错。
注释此行 return (u_char *) & VAR; /* 修改完毕可正常编译安装将&VAR修 default: /* 改为固定值ERROR_MSG("");}return NULL;}intwrite_bluenum(int action,u_char * var_val,u_char var_val_type,size_t var_val_len,u_char * statP, oid * name, size_t name_len){long value;int size;switch (action) {case RESERVE1:if (var_val_type != ASN_INTEGER) {fprintf(stderr, "write to blue not ASN_INTEGER\n");return SNMP_ERR_WRONGTYPE;}if (var_val_len > sizeof(long)) {fprintf(stderr, "write to blue: bad length\n");return SNMP_ERR_WRONGLENGTH;}break;case RESERVE2:size = var_val_len;value = *(long *) var_val;break;case FREE:/** Release any resources that have been allocated*/break;case ACTION:/** The variable has been stored in 'value' for you to use,* and you have just been asked to do something with it.* Note that anything done here must be reversable in the UNDO case */break;case UNDO:/** Back out any changes made in the ACTION case*/break;case COMMIT:/** Things are working well, so it's now safe to make the change * permanently. Make sure that anything done here can't fail! */break;}return SNMP_ERR_NOERROR;}2 mib的加载:上面的NEW-MIB BLACK-MIB GREEN-MIB BLUE-MIB NEW-MIB2WHITE-MIB由于都是按照 SNMP概要设计_0.1.doc 进行生成,因此都是在此路径下。
每次只能加载排在首位的NEW-MIB中的节点。
例如现在加载BLACK-MIB中的节点则把原来在前面的NEW-MIB 右键卸载则有如下结果mib生成的C代码模板,具体修改方法正在学习中。