example.coffee
changeset 3 edd377ebd4ca
parent 2 cd4a9319d71d
equal deleted inserted replaced
2:cd4a9319d71d 3:edd377ebd4ca
    17 typeStr[snmpTypes.NoSuchObject] =      'NoSuchObject'
    17 typeStr[snmpTypes.NoSuchObject] =      'NoSuchObject'
    18 typeStr[snmpTypes.NoSuchInstance] =    'NoSuchInstance'
    18 typeStr[snmpTypes.NoSuchInstance] =    'NoSuchInstance'
    19 typeStr[snmpTypes.EndOfMibView] =      'EndOfMibView'
    19 typeStr[snmpTypes.EndOfMibView] =      'EndOfMibView'
    20 typeStr[snmpTypes.PDUBase] =           'PDUBase'
    20 typeStr[snmpTypes.PDUBase] =           'PDUBase'
    21 
    21 
       
    22 ###
       
    23 Converts TimeTicks value to easy-to-use structure.
       
    24 ###
    22 convertTimeTicks = (v) ->
    25 convertTimeTicks = (v) ->
    23   intDiv = (a, b) -> Math.floor(a / b)
    26   intDiv = (a, b) -> Math.floor(a / b)
    24   msec = v % 100
    27   msec = v % 100
    25   v = intDiv(v, 100)
    28   v = intDiv(v, 100)
    26   secs = v % 60
    29   secs = v % 60
    34   hours: hours
    37   hours: hours
    35   mins: mins
    38   mins: mins
    36   secs: secs
    39   secs: secs
    37   msecs: msec
    40   msecs: msec
    38 
    41 
    39 
    42 ###
       
    43 Processes SNMP result value.
       
    44 ###
    40 processVarBind = (vb) ->
    45 processVarBind = (vb) ->
    41   rv =
    46   rv =
    42     oid: vb.oid.reduce (x,y) -> x+"."+y
    47     oid: "." + vb.oid.reduce (x,y) -> x+"."+y
    43     value: vb.value
    48     value: vb.value
    44     type: vb.type
    49     type: vb.type
    45     typeStr: typeStr[vb.type] ? 'Unknown'
    50     typeStr: typeStr[vb.type] ? 'Unknown'
    46   if (rv.type == snmpTypes.TimeTicks)
    51   if (rv.type == snmpTypes.TimeTicks)
    47     rv.timeTicks = convertTimeTicks(vb.value)
    52     rv.timeTicks = convertTimeTicks(vb.value)
    48   rv
    53   rv
    49 
    54 
       
    55 ###
       
    56 Creates SNMP session and retrieves values for the supplied OIDs.
       
    57 ###
    50 snmpget = (opts, cb) ->
    58 snmpget = (opts, cb) ->
    51   sess = new snmp.Session(opts)
    59   sess = new snmp.Session(opts)
    52   res = []
    60   res = []
    53   snmpgetOne = (i) ->
    61   snmpgetOne = (i) ->
    54     if (i < opts.oids.length)
    62     if (i < opts.oids.length)
    65     else
    73     else
    66       sess.close()
    74       sess.close()
    67       cb(res)
    75       cb(res)
    68   snmpgetOne 0
    76   snmpgetOne 0
    69 
    77 
       
    78 # Example OIDs (some intentionally wrong).
    70 oids = [
    79 oids = [
    71   '.1.3.6.1.2.1.1.1',
    80   '.1.3.6.1.2.1.1.1',
    72   '.1.3.6.1.2.1.1.1.0',
    81   '.1.3.6.1.2.1.1.1.0',
    73   '.1.3.6.1.2.1.1.2.0',
    82   '.1.3.6.1.2.1.1.2.0',
    74   '.1.3.6.1.2.1.1.3.0',
    83   '.1.3.6.1.2.1.1.3.0',
    83   host:  process.env.HOST ? "localhost"
    92   host:  process.env.HOST ? "localhost"
    84   community: process.env.COMMUNITY ? "public"
    93   community: process.env.COMMUNITY ? "public"
    85   oids: oids
    94   oids: oids
    86   abortOnError: true
    95   abortOnError: true
    87 
    96 
       
    97 ###
       
    98 Do the work
       
    99 ###
    88 snmpget(opts, (res) -> console.log res)
   100 snmpget(opts, (res) -> console.log res)