nodejs snmp打印机状态

时间:2017-09-13 07:41:07

标签: node.js snmp

我试图让nodejs应用运行,请求nodejs打印机的状态。 到目前为止,我已尝试使用" net-snmp"没有成功。

问题开始使用oid(iso.3.6.1.2.1.43.8.2.1.12.1.1)。

如果我使用' iso.3.6.1.2.1.43.8.2.1.12.1.1'或' .3.6.1.2.1.43.8.2.1.12.1.1' 我会得到"错误:参数不是有效的OID字符串"。

如果我使用' 3.6.1.2.1.43.8.2.1.12.1.1' 我得到" RequestFailedError:NoSuchName:3.6.1.2.1.43.8.2.1.12.1.1"。

var snmp = require('net-snmp');

var oids = [".3.6.1.2.1.43.8.2.1.12.1.1"];

var session = snmp.createSession ("w.x.y.z", "public");

session.get (oids, function (error, varbinds) {
if (error) {
    console.error (error);
} else {
    for (var i = 0; i < varbinds.length; i++)
        if (snmp.isVarbindError (varbinds[i]))
            console.error (snmp.varbindError (varbinds[i]))
        else
            console.log (varbinds[i].oid + " = " + varbinds[i].value);
  }
});

snmpwalk将输出: snmpget -v 2c -c public w.x.y.z iso.3.6.1.2.1.43.8.2.1.12.1.1     iso.3.6.1.2.1.43.8.2.1.12.1.1 = STRING:&#34; 24mm Dia / 0.94 \&#34;直径&#34;

有没有人知道如何解决这个问题,也许还有一个解决方法。 如果我使用snmp-native,我会得到类似的错误。

1 个答案:

答案 0 :(得分:0)

非常感谢Gambit支持!

只要把#34; 1&#34;而不是&#34; iso&#34;。

var snmp = require('net-snmp');
//wrong: var oids = ["iso.3.6.1.2.1.43.8.2.1.12.1.1"];

//更正

var oids = [&#34; 1.3.6.1.2.1.43.8.2.1.12.1.1&#34;];

var session = snmp.createSession(&#34; w.x.y.z&#34;,&#34; public&#34;);

session.get (oids, function (error, varbinds) {
if (error) {
     console.error (error);
} else {
     for (var i = 0; i < varbinds.length; i++)
        if (snmp.isVarbindError (varbinds[i]))
            console.error  (snmp.varbindError (varbinds[i]))
        else
            console.log (varbinds[i].oid + " = " + varbinds[i].value);
  }
})