2014-09-04 111 views
1

许多人可能不熟悉snmpjs,但是如果您熟悉SNMP,那么我需要一些帮助发送陷阱消息我使用snmpjs生成的。在运行下面的代码...如何使用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}); 

这本身就是混乱但这是按照创建SNMP陷阱侦听的方式atlantageek.com:http://atlantageek.com/2014/08/23/snmp-trap-listener-in-node/

这使我困惑,因为我们似乎在使用dgram和eventEmitter来侦听陷阱。显然我很困惑发送陷阱的方式。

回答

0

的答案,因为谁曾经使用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"); 
});