如题,最近项目有个snmp接口开发的需求,要用到自定义mib库文件(如何自定义还没找到方法),手里有几个可测试用的mib文件,不知道怎么关联到snmp服务,是不是有类似linux里面的snmp.conf的配置,查了好多资料都没有结果,请知道的帮忙指导一下 |
|
40分 |
加载自定义的mib库文件,需要对snmp的代理的进行改写,然后才能使用。网上有很多开源的snmp代码,如:net-snmp、snmp++等,推荐使用net-snmp。
|
嗯,谢谢,我用的是snmp++,是可以操作mib对象,现在主要问题是自定义的mib文件怎么能让snmp服务找到,像这种.iso.org.dod.internet.mgmt.mib-2.system.sysLocation,可以直接访问对应的oid就可以设置sysLocation,如果我自定仪的*etone.collect.drop.Msu,怎么才能够被访问呢,要加载mib?怎么加载?想死了55 |
|
10分 |
记得linux下是需要自己配置的,修改snmp的相关文件。我只是用到了最基本的,所以具体操作不是很清楚。
|
没研究过snmp++。但是我想肯定要修改snmp代理端吧,你只有OID,没有OID对应的操作方法,怎么实现get和set的功能。我用的是net-snmp,而且第一个步骤就是生成自定义mib对应的.h和.c文件,然后修改,再重新编译代理端的lib和exe。
|
|
嗯,多谢~snmp++里面是封装了一类get/set方法,可以直接设置oid对应节点的值,我理解的也不多,这两天看了一些基本的东西。代理端我理解就是存放mib仓库的地方,不知道你说的lib和exe是指什么文件?
|
|
我弄的是windows下的,所以又静态链接库和可执行文件(exe)。如果是linux下的话,应该是源码安装。linux不是很熟,不好意思,就帮不了你了。
|
|
10分 |
不知道你说的lib和exe是指什么文件?
对应的就是linux下的libsnmp.so和snmpd之类的 |
是 就是楼上说的这两个文件。
|
|
我是win平台的,snmpd.lib和snmp.exe这两个文件我知道,本地也测试了几个简单的例子,==,你是说自定义mib库文件需要生成.h和.c(cpp)编译到snmpd.lib里去?我再看看,多谢
|
|
我应该是要重新编译代码的,还没有这么先进吧,能直接解析mib,知道这个OID是干啥的,自己去执行。
|
|
我也是不知道怎么关联mib文件和snmp服务,才想当然的认为应该会有snmp里面应该会有类似加载之类的动作关联自定义的mib文件,就像sql加载数据库文件那样。现在看来是agent++是需要针对mib文件生成目标代码,只是sdmp++好像不一样。我自己再去研究研究,顺便再问下,我们对一个MID文件节点的操作是不是都是通过oid操作的?这样oid是设定死的了么? |
|
是通过OID操作的。OID也写死的,而且在整个MIB中式唯一的。
|
|
这本该是我强项的,我们以前用net-snmp,但是用了不久就全部被TR69替代掉了,所以没研究过net-snmp.
|
|
嗯,谢谢,主要纠结的的是如何使用自定义的mib文件,net-snmp我没有去看,听huangwenshen同学的意思是要针对具体mib文件生成目标代码…但是像基本的SYSDESCR “1.3.6.1.2.1.1.1.0”获取系统信息的描述,难道说对应代码已经写在snmp_pp.lib中了么? |
|
SYSDESCR,在net-snmp中是就是有相应的代码在静态链接库中。
|
|
嗯,谢谢,最后请教一个问题,MIB对应的.h .c(cpp)代码是怎么生成的,网上看到有人用AgentPro,但是找了半天没有找到下载!
|
|
net-snmp是用的mib2c.bat ,snmp++ 应该也有相应的批处理。google一下吧。
|
|
嗯,多谢,http://www.agentpp.com/agentpp3_5/download_agentpp/download_agentpp.html这个网站上有snmp++开发相关的几个下载~需要的同学可以去参考下
to huang:你好,可能snmp的基本原理没有完全弄清楚,现在我要一些统计信息到代理端的mib文件中,这样,我是不是管理端和代理端都要开发?管理端保存数据到代理端的mib,同时代理端接受其他管理端的请求? (用AgenPro生成snmp++代码发现只有.h文件,只包含几个和oid、名称关联的宏定义,然后又生成了相应的agent++代码发现里面的cpp文件中包含一些类似创建mib文件的信息add_col(new SnmpDisplayString(colProcessName, READONLY, new NS_SNMP OctetStr())); 查了一下agent++是开发代理端的api,晕了,之前一直理解是我只需要往mib里面存放数据就行了,现在看来两边都要做么?感谢!) |
|
还有一个问题, ,如果要使用自定义的MIB文件,是不是必须要申请OID的,不然oid怎么确定,是不是可以随便写一个较大的值?
|
|
1、代理端是需要自己去编写,管理端都是通用的不用做改变。
2、自己创建的OID一般都是在“1.3.6.1.4.1”这个OID下面续写,思科啊、微软啊这些公司的OID都是写在这个下面的。至于数值你估计一个比较大的和别人没冲突的。 |
|
多谢多谢,对流程基本了解
|
|
因为这个工具其实叫“AgenPro”而不是“AgentPro”…我也被误导了很久,找都找不到…
|
|
另外想问一下 楼主
最后这个项目你是怎么搞定的 我遇到和你基本相同的问题 |
|
还有,楼主,这个AgenPro不是要License吗?请问你是从哪里搞到的?
|
|
楼主,Agenpro license有吗?
|
|
我静态加载的自定义MIB,怎么访问不到?
shixiaohui@shixiaohui:~/share/net-snmp-5.7.1$ snmpget -v2c -c public localhost 1.3.6.1.4.1 .41066 TS-OID-MIB::tskj = No Such Object available on this agent at this OID |
|
如何在Linux用snmp编程获得oid的配置文件
|