使用Node.js在本地处理SNMP陷阱和通知

3
我正在尝试监听标准UDP 162端口上的SNMP陷阱,并解析和输出它们。
我查看了Node.js的snmpjs和snmp-native插件,它们都似乎主要用于生成代理。我想要做的是监听并解码转发到我的本地主机的陷阱和通知(甚至可以确认通知)。我知道我可以花费很多时间使用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);

两个 snmp 解析函数都出现了错误,第一个是 parseMessage 未定义,而在 snmpjs 文档中如何创建正确的对象不清楚。您可以查看http://wesolows.github.com/node-snmpjs/protocol.html#parseMessage(arg)获取更多信息。由于没有消息事件,我无法使用 snmpjs 代理。

第二个来自 snmp-native 的解析器,我收到了一个有关缓冲区不是 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)

任何指针都会很好,谢谢。
1个回答

2

node-snmpjs 0.0.4现在包含一个简单的陷阱监听器,可以在陷阱上发出事件。非常容易添加一个类似于Agent的Express风格接口。请参见GitHub提交,以获取示例消费者的功能。需要更多的工作来使其适用于生产环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接