处理snmp陷阱并使用节点js在本地主机上通知

我正在尝试侦听标准UDP 162端口上的snmp陷阱,然后parsing并输出它们。

我已经查看了snmpjs和snmp本地插件的节点,他们似乎主要代理人的一代。 我想要做的是听取和解码陷阱和通知,转发到我的本地主机(甚至可能承认通知)。 我知道我可以用dgram和ASN.1BER花很多时间,但是宁愿使用已经写好的snmp代码。

var dgram = require('dgram'); //var snmp = require('snmpjs'); var snmp = require('snmp-native'); var server = dgram.createSocket("udp4"); server.on("listening", function() { var addr = server.address(); console.log("Server listening "+ addr.address + ":" + addr.port); }); server.on("message", function (msg, rinfo) { console.log("From " + rinfo.address + ":" + rinfo.port); console.log("server got: " + msg); //console.log("Parse: " + snmp.parseMessage({raw:msg})); console.log("Parse: " + snmp.parse(msg)); }); server.bind(162); 

这两个snmpparsing函数都会导致错误,第一个是parseMessage未定义,并且在snmpjs文档中不清楚如何创build正确的对象http://wesolows.github.com/node-snmpjs/protocol.html#parseMessage(arg) 。 而且我不能使用snmpjs代理,因为没有消息事件。

从snmp-native的第二个parsing,我得到一个错误,该缓冲区不是一个int …

 Error: Buffer 06082b06010603010105 does not appear to be an Integer at Object.parseInteger (/usr/share/node/node_modules/snmp-native/lib/asn1ber.js:318:15) 

任何指针会很好,谢谢。

node-snmpjs 0.0.4现在包含一个简单的陷阱侦听器,可以在陷阱中发送事件。 快速风格的界面可以很容易地添加到代理的function。 请参阅GitHub提交为示例使用者添加此function。 需要更多的工作来使其适合生产使用。