node.js - 使用 Node js 处理 snmp 陷阱并通知本地主机

标签 node.js snmp snmp-trap

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

我看过 Node 的 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)

任何指示都会很棒,谢谢。

最佳答案

node-snmpjs 0.0.4 现在包含一个简单的陷阱监听器,可以在陷阱上发出事件。可以很容易地添加一个 Express 风格的界面来匹配 Agent 的功能。查看GitHub commit为示例消费者添加此功能。需要做更多的工作才能使其适合生产使用。

关于node.js - 使用 Node js 处理 snmp 陷阱并通知本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14587341/

相关文章:

java - 在 Java 中发送陷阱 v2

javascript - DraftJS getBlocksAsArray() 在生产中返回一个数组,但在开发中只返回一个数组(并且有效)

Javascript/Node Js - 为每个实例创建新变量

javascript - 将 CSV 文件从 URL 导入到 Node.js

.net - 定义MIB并在.net下发送SNMP陷阱

c++ - 使用 SNMPv2 和 c++ 编写 getBulkRequest 函数

snmp - 如何在C中使用net-snmp发送snmptrap?

java - SNMP4J:如何通过团体字符串限制接收的陷阱或至少知道陷阱的团体字符串?

Javascript 如何在 mysql 中使用 Async/Await

linux - 我如何查看 linux 内核 SNMP 计数器?