代码之家  ›  专栏  ›  技术社区  ›  mark77

nodejs snmp打印机状态

  •  1
  • mark77  · 技术社区  · 7 年前

    我正在尝试运行一个nodejs应用程序,请求带有nodejs的打印机的状态。 到目前为止,我尝试使用“网络snmp”,但没有成功。

    我将得到“错误:参数不是有效的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公共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=字符串:“24mm直径/0.94 \“直径”

    有人知道如何解决这个问题吗?也许还有一个解决方法。 如果使用snmp native,则会出现类似错误。

    1 回复  |  直到 7 年前
        1
  •  0
  •   mark77    7 年前

    谢谢大家的支持!

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

    //正确

    var OID=[“1.3.6.1.2.1.43.8.2.1.12.1.1”];

    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);
      }
    })