我正在尝试在标准UDP 162端口上侦听snmp陷阱,然后解析并输出它们。
我已经查看了节点的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)
任何指针都会很棒,谢谢。
答案 0 :(得分:2)
node-snmpjs 0.0.4现在包含一个简单的陷阱侦听器,它在陷阱上发出事件。可以非常轻松地添加Express风格的界面以匹配代理的功能。请参阅GitHub commit为示例消费者添加此功能。需要做更多的工作才能使其适合生产使用。