barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:9752回复:57

为什么我用net-snmp-5.0.7扩展win32收不到自己的Trap ?

楼主#
更多 发布于:2003-06-11 22:21
救命阿

   各位大虾.还有版主同志,大家都辛苦了。

   我现在用net-snmp-5.0.7再win32下面扩展,可是当我用MIB2c生成.c和,h文件以后,按照readme.win32的文档说明,进行了扩展,可是我重新用VC编译后并不能收到我自己定义的Trap信息,

   这是为什么阿?
  
   大家又没有好的方法阿?很集的阿!
  
   帮我解决了这个问题我一定给他想要得分。

   附件中我扩展win32的文档,大家可以看看,对你们再linux和win 32应该也有帮助的。
  
   希望版主能帮我提前一下,辛苦了。  
  
附件名称/大小 下载次数 最后更新
2003-06-11_net-snmp使用指南.doc (48KB)  38
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-12 10:48
附件没有,不知道怎么回答你的问题。
用snmptrap是可以实现的,你的现象是怎么样的,贴上来
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-12 11:45
我是先用MIB2c生成了我自己定义的MIB对应的cheyene.c和cheyene.h

附件中文件如下:
InocuLAN-Alarm-MIB.txt 自定义的MIB文件
cheyenne.c cheyenne.h  是该MIB用MIB2c生成的文件

下面是我具体的win32扩展步骤:
1、拷贝InocuLAN-Alarm-MIB.txt 到net-snmp-5.0.7\\mibs下。

2、将cheyenne.c cheyenne.h  文件拷贝到\\net-snmp-5.0.7\\agent\\mibgroup下。

3、修改net-snmp-5.0.7\\win32下面的config.h中的
/* default list of mibs to load */
#define DEFAULT_MIBS \"InocuLAN-Alarm-MIB;IP-MIB;IF-MIB;TCP-MIB;UDP-MIB;SNMPv2-MIB;RFC1213-MIB;UCD-SNMP-MIB;UCD-DEMO-MIB;SNMP-TARGET-MIB;SNMP-VIEW-BASED-ACM-MIB;SNMP-COMMUNITY-MIB;UCD-DLMOD-MIB;SNMP-FRAMEWORK-MIB;SNMP-MPD-MIB;SNMP-USER-BASED-SM-MIB;SNMP-NOTIFICATION-MIB;SNMPv2-TM\"
载开始的地方我加入了InocuLAN-Alarm-MIB。

4、用VC打开win32.dsw,
   增加cheyenne.c  cheyenne.h文件到netsnmpmibs工程中;
   编辑’<sourcedir>\\win32\\mib_module_includes.h’文件,增加代码  #include “mibgroup/cheyenne.h”到我的mib_module_includes.h文件中;
   编辑’<sourcedir>\\win32\\ mib_module_inits.h’文件,增加代码调用我的初始化函数 if (should_init(“cheyenne”)) init_cheyenne();
   重新编译netsnmpmibs和snmpd 工程文件,编译成功,我认为到此扩展完毕。

5、编译snmptrapd工程(接受Trap的模块),当我用vc单步调试的时候(snmptrapd_d.exe运行(不带任何参数)),当程序执行到
    (main函数中)transport = netsnmp_tdomain_transport(cp, 1, \"udp\");代码的时候,返回的Transport有时候可能返回为NULL,则snmptrapd启动失败,报告错误(cann\'t open port 162: error 2\"no such file or directory\"),这种错误有时候会发生,我看了代码,认为可能是绑定162端口失败,有可能162被别的程序已经绑定。我的这种理解对么???
 
   当程序没有这种错误的时候,我能正常的执行到下面的代码。
        count = select(numfds, &fdset, 0, 0, tvp);
        if (count > 0) {
            snmp_read(&fdset);
        } else
            switch (count) {
            case 0:
                snmp_timeout();
                break;
            case -1:
                if (errno == EINTR)
                    continue;
                snmp_log_perror(\"select\");
                running = 0;
                break;
            default:
                fprintf(stderr, \"select returned %d\\n\", count);
                running = 0;
            }
    当程序运行到count = select(numfds, &fdset, 0, 0, tvp);这一行时候,默认是等待5秒,看有没socket有trap包到来,在程序整个测试的过程中我开着另外的机器向调试机器发送TRAP包,可是不知道为什么,程序返回的count总是0,最后都是timeout,冰没有执行snmp_read,因而也没有进入snmp_input这个回调函数进行处理。
  joinjin老兄,多谢你的帮忙,你以前扩展成功过win32的自定义MIB么,请你多多帮忙,我会在线等待
  我的QQ:11822654,Mail:barryxu@ca-jc.com
  不知道我这样描述你能否明白我的问题?


    


    

 
附件名称/大小 下载次数 最后更新
2003-06-12_mib.rar (5KB)  14
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-12 11:50
UP了一下我的doc文档,这次应该可以下载了巴!
附件名称/大小 下载次数 最后更新
2003-06-12_net-snmp使用指南.doc (48KB)  15
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-12 13:14
1\\端口被占用的问题是很常见的,如果你在WINDOWS2000中开了SNMPTRAP,则无法使用这个端口作服务器了。只要先把这个服务关了就可以了。注意:不是SNMP那个服务。
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-12 13:20
net-snmp中win32下面有win32.dsw和win32sdk.dsw,我用的是win32.dsw,不知道这个问题会不会印象我扩展MIB,接受TRAP的实现????

对于win32.dsw中还有一些子工程我没有用到,但是我想知道各个工程都是干什么用的?你能告诉我剩下的那些没有填写的工程具体用来做什么的么?
   我的问题有点多,希望不给你添很多麻烦!祝工作顺利!
 encode_keychange:
 libagent     :
 libhelpers   :编译生成help的lib文件
 libsnmp      :
 libsnmp_dll  :
 netsnmpmibs  : 加载MIB时编译生成lib文件
 snmpbulkget  :
 snmpbulkwalk :
 snmpd        :
 snmpddelta   :
 snmpdf       :  
 snmpget      :Fetch an SNMP object
 snmpgetnext  :Fetch next SNMP object
 snmpnetstat  :send snmp GET requests to a network entity
 snmpset      :SET an SNMP object
 snmpstatus   :
 snmptable    :
 snmptest     :
     用法: snmptest -v 1 [-q] hostname community [objectID]
 snmptranslate:
 snmptrap     :发送Trap到一个网络实体(我可以用这个程序给我开发的机器发送我定义的MIB对应的Trap么?)
 snmptrapd    :接收trap, 写入日志
 snmpusm      :send snmp SET requests to a network entity to change the usm user database,其中包括
    1、get engineID dynamicly.
    2、read passwords from prompts
    3、customize responses with user names, etc.
 snmpvacm     :发送一个 snmp SET requests到一个网络实体改变vacm数据库信息;
 snmpwalk   :取得一个代理的所有SNMP OID信息;
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-12 13:24
2.其实在NETSNMP中有PRINT_MIB函数,你可以用他把你建立的TREE打印出来,这样你就可以看到你的mib文件是否被正确地挂到tree上了。如果已经存在,则扩展是正确的。
3.SNMPTRAP的种类比较少,会根据你定义的类型进行比较,通过trap_description(type)来解释收到TRAP号码。不过,现在你还没到这里,呵呵!
4.由于文件太多,我也有点忘了,看看是否这样你就可以解决你现在碰到的问题,不行的话,我再钻研一下。
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-12 13:26
端口占用的问题我已经解决了。

多谢。

自定义trap接收不到的问题现在比较紧迫,其他都可以以后再说!

非常感谢你的帮助!
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-12 13:33
你其它的TRAP收的到吗?比如交换机的端口插拔(热启动)等
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-12 13:36
  PRINT_MIB函数---谢谢你,这下我可以自己判断是否成功扩展上去。Very good,这个函数可以帮我很大的忙。
 
  trap_description(type)来解释收到TRAP号码,我现在已经编写好代码到加入到snmp_input中只要snmp_read函数以执行,回调就会由系统自动调用,在我添加的代码里面我会去判断pdu->command
  pdu->traptype 是不是我要接受的TRAP,还有我会判断pdu->enterprise 看看自定义的OID是不是我MIB中定义的1.3.6.1.4.1.46.879 ,我这样处理就应该到你说的那一步了吧。
  
  我会按照你的提示去尝试一下,然后告诉你结果。
  
  真心的感谢您的帮忙。祝你工作顺利,身体健康,Money多多,嘻嘻!
  
    

barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-12 13:40
其他的Trap,我没有交换机的测试环境,所以我也不知道能否收到,

你能告诉我一个简单的测试方法,看看trap能否受到。

我这里又一个trapreceiver的win32软件(破解完的),原先我用这个软件来测试接收我发出的Trap的。

你能否告诉我怎么样才能在net-snmp win32下进行测试其他的trap是否能收到?
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-12 14:49
用一台计算机试一下,如果安装了SNMP,可以设置发送到那里和COMMUNITY,然后,开关一下就可以了,不过,这个方法好像比较烦。
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-12 15:25
你看了我上面MIB扩展的过程, 你觉得又没有什么问题?

我用print_mib已经把我的MIB存放到文件中,见附件。

mibtree.txt

我看了一些里面的OID,在enterprise里面没有我要加入的
  InocuLAN-Alarm-MIB模块,不知道我哪里出错了?

难道是我扩展MIB错误,可是我是按照程序readme来做的阿。

现在有点迷糊了。
附件名称/大小 下载次数 最后更新
2003-06-12_mibtree.txt (51KB)  7
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-12 15:50
你用的readme让我看看,我有点不太明白怎么会不行,
记得只要把MIB靠到MIBS下就可以了,程序在INIT的时候自己会读的,你可以跟踪一下啊!
另外,你现在是作AGENT,如果使用snmpwalk浏览,如果正确,不管服务器端怎么样,都可以正确地显示AGENT端的内容。挂MIB是为了在收到回应后,可以根据TREE上的结构显示解释的结果,例如接口类型,如果返回值是63,有1213mib的话,打印出来就是CSMDCD,如果没有,也会打印出63。
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-06-12 15:58
我在netsnmpmibs工程中加入了cheyenne.c cheyenne.h中以后,重新编译该工程没有问题生成了netsnmpmibs_d.lib 。
 
--------------------Configuration: netsnmpmibs - Win32 Debug--------------------
 
netsnmpmibs_d.lib - 0 error(s), 0 warning(s)
 
 
 
   之后我重新编译snmpd工程,出现下面地错误,这是为什么阿?
 
--------------------Configuration: snmpd - Win32 Debug--------------------
Linking...
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
netsnmpmibs_d.lib(errormib.obj) : error LNK2001: unresolved external symbol _errno
../bin/snmpd_d.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
 
snmpd_d.exe - 2 error(s), 1 warning(s)
 
  我就是因为这个才不能成功扩展MIB,所以也就收不到TRAP信息了。
  这个错误是为什么阿?我明明已经编译成功了netsnmpmibs_d.lib 了阿????
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-06-12 16:00
你的MIB文件对吗,我觉得不大对,但是我忘了规则,你可以对比一下RFC的mib文件,看看有没有问题
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-06-12 16:03
net-snmp-5.0.7下面的

README.win32

用ultraedit可以打开。
附件名称/大小 下载次数 最后更新
2003-06-12_README.win32 (16KB)  7
barryxu
驱动牛犊
驱动牛犊
  • 注册日期2003-01-20
  • 最后登录2003-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-06-12 16:06
我的MIB文件没有问题的,这个文件原来被别人加入到SNMP Manager中,而且Manager端还能收到trap信息。

  
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-06-12 16:09
我想应该用SNMP.LIB
你能不能告诉我你做什么,打算怎么实现(理想的情况下)!
今天比较空,可以帮你想想
joinjin
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-06-12 16:20
你把RFC1065-SMI。txt发给我,我帮你调试一下,看看是否是挂不上去
上一页
游客

返回顶部