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



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

我已经查看了节点的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);

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

来自 snmp-native 的第二个解析,我收到一个错误,即缓冲区不是整数。

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 现在包含一个简单的陷阱侦听器,用于在陷阱上发出事件。 可以非常轻松地添加快速样式的界面以匹配代理的功能。 请参阅示例使用者的 GitHub 提交添加此功能。 需要做更多的工作才能使其适合生产用途。

相关内容

最新更新