2014-09-04 3 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); 

Я получаю ловушку, которая может почти различаться ловушкой, генерируемой сетью-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"); 
}); 
Смежные вопросы