@vostro/net-snmp
Version:
JavaScript implementation of the Simple Network Management Protocol (SNMP)
114 lines (102 loc) • 3.07 kB
JavaScript
var snmp = require ("../");
var getopts = require ("getopts");
var options = getopts(process.argv.slice(2));
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 (JSON.stringify(data.pdu.varbinds, null, 2));
}
};
var agent = snmp.createAgent(snmpOptions, callback);
var authorizer = agent.getAuthorizer ();
authorizer.addCommunity ("public");
authorizer.addUser ({
name: "fred",
level: snmp.SecurityLevel.noAuthNoPriv
});
authorizer.addUser ({
name: "betty",
level: snmp.SecurityLevel.authNoPriv,
authProtocol: snmp.AuthProtocols.sha,
authKey: "illhavesomeauth"
});
authorizer.addUser ({
name: "wilma",
level: snmp.SecurityLevel.authPriv,
authProtocol: snmp.AuthProtocols.sha,
authKey: "illhavesomeauth",
privProtocol: snmp.PrivProtocols.des,
privKey: "andsomepriv"
});
// console.log(JSON.stringify(agent.getAuthorizer().getUsers(), null, 2));
var scalarProvider = {
name: "sysDescr",
type: snmp.MibProviderType.Scalar,
oid: "1.3.6.1.2.1.1.1",
scalarType: snmp.ObjectType.OctetString
};
agent.registerProvider (scalarProvider);
var tableProvider = {
name: "ifTable",
type: snmp.MibProviderType.Table,
oid: "1.3.6.1.2.1.2.2.1",
tableColumns: [
{
number: 1,
name: "ifIndex",
type: snmp.ObjectType.Integer
},
{
number: 2,
name: "ifDescr",
type: snmp.ObjectType.OctetString
},
{
number: 3,
name: "ifType",
type: snmp.ObjectType.Integer
}
],
tableIndex: [
{
columnName: "ifIndex"
}
],
handler: function ifTable (mibRequest) {
// e.g. can update the table before responding to the request here
mibRequest.done ();
}
};
agent.registerProvider (tableProvider);
var mib = agent.getMib ();
mib.setScalarValue ("sysDescr", "Rage inside the machine!");
mib.addTableRow ("ifTable", [1, "lo", 24]);
mib.addTableRow ("ifTable", [2, "eth0", 6]);
// mib.deleteTableRow ("ifTable", [2]);
// mib.unregisterProvider ("ifTable");
// mib.unregisterProvider ("sysDescr");
// var store = snmp.createModuleStore ();
// var providers = store.getProviders ("IF-MIB");
// mib.registerProviders (providers);
//console.log (JSON.stringify (providers, null, 2));
mib.dump ({
leavesOnly: true,
showProviders: true,
showValues: true,
showTypes: true
});
// var data = mib.getTableColumnDefinitions ("ifTable");
// var data = mib.getTableCells ("ifTable", true);
// var data = mib.getTableColumnCells ("ifTable", 2);
// var data = mib.getTableRowCells ("ifTable", [1]);
// mib.setTableSingleCell ("ifTable", 2, [2], "changed!");
var data = mib.getTableSingleCell ("ifTable", 2, [2]);
// var data = mib.getScalarValue ("sysDescr");
console.log(JSON.stringify (data, null, 2));