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來偵聽陷阱。顯然我很困惑發送陷阱的方式。