123 рядки
5.0 KiB
JavaScript
123 рядки
5.0 KiB
JavaScript
/* eslint-disable no-unused-vars */
|
|
|
|
var snmp = require ("../");
|
|
var getopts = require ("getopts");
|
|
|
|
var options = getopts(process.argv.slice(2));
|
|
var providers;
|
|
var mibDir = '/var/tmp/mibs/';
|
|
|
|
var counter64 = function (num) {
|
|
var buf = Buffer.alloc (4);
|
|
buf.writeUInt32BE (num);
|
|
return buf;
|
|
};
|
|
|
|
var snmpOptions = {
|
|
disableAuthorization: options.n,
|
|
port: options.p,
|
|
engineID: options.e,
|
|
debug: options.d
|
|
};
|
|
|
|
var callback = function (error, data) {
|
|
if ( error ) {
|
|
console.error (error);
|
|
} else {
|
|
console.log (data.pdu.varbinds[0].oid);
|
|
}
|
|
};
|
|
|
|
var store = snmp.createModuleStore ();
|
|
var agent = snmp.createAgent (snmpOptions, callback);
|
|
var mib = agent.getMib ();
|
|
|
|
var authorizer = agent.getAuthorizer ();
|
|
authorizer.addCommunity ("public");
|
|
|
|
// IF-MIB load and providers registration
|
|
store.loadFromFile (mibDir + "IANAifType-MIB.mib");
|
|
store.loadFromFile (mibDir + "IF-MIB.mib");
|
|
providers = store.getProvidersForModule ("IF-MIB");
|
|
mib.registerProviders (providers);
|
|
|
|
// ifNumber
|
|
// Scalar type - setScalarValue() and getScalarValue() are the entire API for these
|
|
mib.setScalarValue ("ifNumber", 5);
|
|
var ifNumberValue = mib.getScalarValue ("ifNumber", 5);
|
|
// console.log (ifNumberValue);
|
|
|
|
// ifEntry
|
|
// Simplest table index - a single-column local index
|
|
mib.addTableRow ("ifEntry", [1, "eth0", 6, 1500, 1000, "", 1, 1, 10, 1000, 100, 10, 0, 0, 0, 2000, 200, 20, 0, 0, 5, "0.0"]);
|
|
mib.addTableRow ("ifEntry", [2, "eth1", 6, 1500, 1000, "", 1, 1, 10, 1000, 100, 10, 0, 0, 0, 2000, 200, 20, 0, 0, 5, "0.0"]);
|
|
mib.setTableSingleCell ("ifEntry", 2, [1], "eth2");
|
|
var ifEntryRow1 = mib.getTableRowCells ("ifEntry", [2]);
|
|
// console.log (ifEntryRow1);
|
|
|
|
// ifXEntry
|
|
// AUGMENTS ifEntry - meaning a single integer foreign key
|
|
mib.addTableRow ("ifXEntry", [1, "eth0", 10, 2, 20, 4, counter64(1000), counter64(100), counter64(50), counter64(20),
|
|
counter64(2000), counter64(200), counter64(100), counter64(40), 1, 1000, 0, 1, "myeth0", 10]);
|
|
var ifXEntryRow1 = mib.getTableRowCells ("ifXEntry", [1]);
|
|
// console.log (ifXEntryRow1);
|
|
var ifXEntryData1 = mib.getTableCells ("ifXEntry", false, false);
|
|
var ifXEntryData2 = mib.getTableCells ("ifXEntry", true, false);
|
|
var ifXEntryData3 = mib.getTableCells ("ifXEntry", false, true);
|
|
var ifXEntryData4 = mib.getTableCells ("ifXEntry", true, true);
|
|
mib.setTableSingleCell ("ifXEntry", 1, [1], "another0");
|
|
|
|
// ifStackEntry
|
|
// Composite index - two local columns
|
|
mib.addTableRow ("ifStackEntry", [1, 2, 1]);
|
|
mib.addTableRow ("ifStackEntry", [3, 4, 2]);
|
|
//mib.deleteTableRow ("ifStackEntry", [2, 3]);
|
|
// var data = mib.getTableCells ("ifStackEntry");
|
|
var ifStackEntryColumn1 = mib.getTableColumnCells ("ifStackEntry", 3, true);
|
|
var ifStackEntryData1 = mib.getTableCells ("ifStackEntry", false, false);
|
|
var ifStackEntryData2 = mib.getTableCells ("ifStackEntry", true, false);
|
|
var ifStackEntryData3 = mib.getTableCells ("ifStackEntry", false, true);
|
|
var ifStackEntryData4 = mib.getTableCells ("ifStackEntry", true, true);
|
|
var ifStackEntryRow1 = mib.getTableRowCells ("ifStackEntry", [3, 4]);
|
|
var ifStackEntryCell1 = mib.getTableSingleCell ("ifStackEntry", 3, [1, 2]);
|
|
|
|
// ifRcvAddressEntry
|
|
// Composite index - one foreign integer column, one local string column
|
|
mib.addTableRow ("ifRcvAddressEntry", [1, "24:41:8c:08:87:5c", 1, 6]);
|
|
var ifRcvAddressEntryRow1 = mib.getTableRowCells ("ifRcvAddressEntry", [1, "24:41:8c:08:87:5c"]);
|
|
var ifRcvAddressEntryCell1 = mib.getTableSingleCell ("ifRcvAddressEntry", 3, [1, "24:41:8c:08:87:5c"]);
|
|
var ifRcvAddressEntryData1 = mib.getTableCells ("ifRcvAddressEntry", false, false);
|
|
var ifRcvAddressEntryData2 = mib.getTableCells ("ifRcvAddressEntry", true, false);
|
|
var ifRcvAddressEntryData3 = mib.getTableCells ("ifRcvAddressEntry", false, true);
|
|
var ifRcvAddressEntryData4 = mib.getTableCells ("ifRcvAddressEntry", true, true);
|
|
|
|
// SNMP-COMMUNITY-MIB
|
|
store.loadFromFile (mibDir + "SNMP-FRAMEWORK-MIB.mib");
|
|
store.loadFromFile (mibDir + "SNMP-TARGET-MIB.mib");
|
|
store.loadFromFile (mibDir + "SNMP-COMMUNITY-MIB.mib");
|
|
providers = store.getProvidersForModule ("SNMP-TARGET-MIB");
|
|
mib.registerProviders (providers);
|
|
providers = store.getProvidersForModule ("SNMP-COMMUNITY-MIB");
|
|
mib.registerProviders (providers);
|
|
mib.addTableRow ("snmpCommunityEntry", ["mark", "public", "publicsec", "80001234", "", "", 1, 1]);
|
|
|
|
// SNMPv2-MIB - loaded as part of base module load
|
|
// store.loadFromFile (mibDir + "SNMPv2-MIB.mib");
|
|
providers = store.getProvidersForModule ("SNMPv2-MIB");
|
|
mib.registerProviders (providers);
|
|
mib.setScalarValue ("sysDescr", "The most powerful system you can think of");
|
|
mib.setScalarValue ("sysName", "multiplied-by-six");
|
|
mib.addTableRow ("sysOREntry", [1, "1.3.6.1.4.1.47491.42.43.44.45", "I've dreamed up this MIB", 20]);
|
|
|
|
// agent.getMib ().dumpProviders ();
|
|
|
|
// mib.dump ();
|
|
|
|
var modules = store.getModules (true);
|
|
var one = store.getModule ("SNMPv2-MIB");
|
|
var names = store.getModuleNames (true);
|
|
|
|
// console.log("All modules: ", JSON.stringify(modules, '', 2));
|
|
console.log("Modules: ", names);
|
|
console.log("Single module definition: ", JSON.stringify(one, '', 2));
|