gpt4 book ai didi

node.js - 如何使用 snmpjs 发送消息

转载 作者:太空宇宙 更新时间:2023-11-03 22:16:43 26 4
gpt4 key购买 nike

很多人可能不熟悉 snmpjs,但如果您熟悉 SNMP,那么我需要一些帮助发送陷阱消息我使用 snmpjs 生成。运行以下代码后...

var trap = snmp.message.createMessage({
version: 0, //this means send a SNMP v1 trap
community: "public",
pdu: snmp.pdu.createPDU({
op: 4,//SNMP trap v1
//...etc. etc.
}),
});

console.log(trap);

我得到的陷阱几乎与 net-snmp 生成的陷阱不同。问题是,我不知道如何正确发送这个陷阱消息。 snmpjs 似乎没有发送功能,这让我很困惑。如果他们没有发送消息的方法,不知道为什么他们会使用这个框架来生成消息。

无论如何,我最近的想法

var str = JSON.stringify(trap);
var buf = new Buffer(str.toString());
var conn = dgram.createSocket('udp4');
conn.send(buf, 0, buf.length, 162, 'localhost', function(err, bytes) {
console.log(bytes+" bytes written");
conn.close();
});

实际打印出来

3152 bytes written.

但是据称接收陷阱的服务器什么也没说。我的发送方法是错误的,但如果有人想看到这里的服务器代码监听陷阱,那就是

var trapd = snmp.createTrapListener();
trapd.on('trap', function(msg){
console.log("Message says...");
console.log(msg);
});
trapd.bind({family: 'udp4', port:162});

这本身就令人困惑,但这是根据 atlantageek.com 创建 snmp 陷阱监听器的方法:http://atlantageek.com/2014/08/23/snmp-trap-listener-in-node/

这让我很困惑,因为我们似乎同时使用 dgram 和 eventEmitter 来监听陷阱。我显然对以哪种方式发送陷阱感到困惑。

最佳答案

对于任何使用过 snmpjs 的人来说,答案如下......

trap.encode();

var socket = dgram.createSocket('udp4');

socket.send(trap._raw.buf, 0, trap._raw.len, 162, 'localhost', function(err, bytes) {
if(err) console.log(err);
console.log(bytes+" bytes written");
});

关于node.js - 如何使用 snmpjs 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com