snmp

0.0.3 • Public • Published

snmp for node.js

i hate writing doco. the code below shows how it works though. it queries all the devices on 192.168.1.0/24 for their interface info. in my environment it was about to find 26 devices which had 3500 interfaces in just under 15 seconds.

var snmp = require('snmp'); var mgr = snmp.createManager( { community: 'public', version: 2, retries: 10 } );

var agents = { }; process.on('exit', function() { console.log(agents); console.log(Object.keys(agents).length); });

var oid2mib = { '1.3.6.1.2.1.2.2.1.2': 'ifDescr', '1.3.6.1.2.1.2.2.1.7': 'ifAdminStatus', '1.3.6.1.2.1.2.2.1.8': 'ifOperStatus', '1.3.6.1.2.1.31.1.1.1.1': 'ifName', '1.3.6.1.2.1.31.1.1.1.15': 'ifHighSpeed', '1.3.6.1.2.1.31.1.1.1.18': 'ifAlias',

    '1.3.6.1.2.1.31.1.1.1.6': 'ifHCInOctets',
    '1.3.6.1.2.1.31.1.1.1.10': 'ifHCOutOctets',

    '1.3.6.1.2.1.31.1.1.1.7': 'ifHCInUcastPkts',
    '1.3.6.1.2.1.31.1.1.1.11': 'ifHCOutUcastPkts',

    '1.3.6.1.2.1.31.1.1.1.8': 'ifHCInMulticastPkts',
    '1.3.6.1.2.1.31.1.1.1.12': 'ifHCOutMulticastPkts',

    '1.3.6.1.2.1.31.1.1.1.9': 'ifHCInBroadcastPkts',
    '1.3.6.1.2.1.31.1.1.1.13': 'ifHCOutBroadcastPkts',

    '1.3.6.1.2.1.2.2.1.13': 'ifInDiscards',
    '1.3.6.1.2.1.2.2.1.19': 'ifOutDiscards',

    '1.3.6.1.2.1.2.2.1.14': 'ifInErrors',
    '1.3.6.1.2.1.2.2.1.20': 'ifOutErrors'

};

function ml(err, res, agent) { if (err) return;

    if (typeof(agents[agent]) === 'undefined')
            agents[agent] = { };

    for (var i = 0; i < res.length; i++) {
            var o = res[i].oid.split('.');
            var idx = o.pop();
            var oid = o.join('.');

            if (typeof(agents[agent][idx]) === 'undefined')
                    agents[agent][idx] = { };

            agents[agent][idx][oid2mib[oid]] = res[i].value.toString();
    }

}

function m(agent) { mgr.get(agent, '1.3.6.1.2.1.1.3.0', function(e, r) { if (e) return;

            for (var k in oid2mib) {
                    mgr.bulkGet(agent, k, function (e, r) { ml(e,r,agent); });
            }
    }, { retries: 3 });

}

for (i = 1; i < 255; i++) m('192.168.1.' + i);

Readme

Keywords

none

Package Sidebar

Install

npm i snmp

Weekly Downloads

12

Version

0.0.3

License

none

Last publish

Collaborators

  • dlg