51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
var moment = require("moment");
|
|
var snmp = require("net-snmp");
|
|
|
|
|
|
var baseoid = "1.3.6.1.2.1.17.7.1.2.2.1.3";
|
|
var regexp = /([0-9]+).([0-9]+).([0-9]+).([0-9]+).([0-9]+).([0-9]+)$/;
|
|
|
|
var session = snmp.createSession("juni.ctdo.de", "ctdo23", { version: snmp.Version2c } )
|
|
|
|
|
|
function getMacFromOID(oid, callback) {
|
|
var matches = regexp.exec(oid);
|
|
var mac = "";
|
|
|
|
if(matches != null) {
|
|
for(var i = 1; i < matches.length; i++) {
|
|
var num = parseInt(matches[i]);
|
|
if(num <= 15) mac += "0";
|
|
mac += num.toString(16) + ":";
|
|
}
|
|
mac = mac.substr(0, mac.length-1);
|
|
|
|
callback(mac);
|
|
}
|
|
}
|
|
|
|
function doneCb(error) {
|
|
if (error)
|
|
console.error(error.toString ());
|
|
|
|
}
|
|
|
|
function feedCb(varbinds) {
|
|
for (var i = 0; i < varbinds.length; i++) {
|
|
if (snmp.isVarbindError(varbinds[i])) {
|
|
console.error(snmp.varbindError (varbinds[i]));
|
|
} else {
|
|
if(varbinds[i].value == "3") { // only valid arp entries
|
|
getMacFromOID(varbinds[i].oid, function(mac) {
|
|
console.log(mac);
|
|
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
session.subtree(baseoid, 20, feedCb, doneCb);
|
|
|