3

標準のUDP162ポートでSNMPトラップをリッスンしてから、それらを解析して出力しようとしています。

ノード用のsnmpjsプラグインとsnmp-nativeプラグインを見てきましたが、どちらもエージェントの生成に重点を置いているようです。私がやりたいのは、ローカルホストに転送されるトラップとインフォームをリッスンしてデコードすることです(インフォームを確認することもできます)。私はdgramとASN.1BERでかなりの時間を費やすことができることを知っていますが、すでに書かれたsnmpコードを使用したいと思います。

var dgram = require('dgram');
//var snmp = require('snmpjs');
var snmp = require('snmp-native');

var server = dgram.createSocket("udp4");

server.on("listening", function() {
    var addr = server.address();
    console.log("Server listening "+ addr.address + ":" + addr.port);
});

server.on("message", function (msg, rinfo) {
    console.log("From " + rinfo.address + ":" + rinfo.port);
    console.log("server got: " + msg);
    //console.log("Parse: " + snmp.parseMessage({raw:msg}));
    console.log("Parse: " + snmp.parse(msg));
});

server.bind(162);

両方のsnmp解析関数はエラーを引き起こし、最初はparseMessageが定義されておらず、正しいオブジェクトを作成する方法がsnmpjsドキュメントで明確ではありませんhttp://wesolows.github.com/node-snmpjs/protocol.html#parseMessage(arg)。また、on messageイベントがないため、snmpjsエージェントを使用できません。

snmp-nativeからの2番目の解析では、バッファーがintではないというエラーが発生します。

Error: Buffer 06082b06010603010105 does not appear to be an Integer
at Object.parseInteger (/usr/share/node/node_modules/snmp-native/lib/asn1ber.js:318:15)

どんなポインタでも素晴らしいでしょう、ありがとう。

4

1 に答える 1

2

node-snmpjs 0.0.4には、トラップでイベントを発行する単純なトラップリスナーが含まれるようになりました。Expressスタイルのインターフェイスは、エージェントの機能に合わせて非常に簡単に追加できます。コンシューマーの例については、この機能を追加するGitHubコミットを参照してください。これを実稼働での使用に適したものにするためには、さらに多くの作業が必要になります。

于 2013-01-31T19:38:44.230 に答える