【问题标题】:How do I send a message using snmpjs如何使用 snmpjs 发送消息
【发布时间】:2014-09-04 16:51:26
【问题描述】:

可能很多人不熟悉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 来监听陷阱。我显然对发送陷阱的方式感到困惑。

【问题讨论】:

    标签: node.js snmp


    【解决方案1】:

    对于曾经使用过 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");
    });
    

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 2021-02-24
      • 2021-03-11
      • 2015-12-20
      • 1970-01-01
      • 2014-04-30
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多