当我尝试从代理获取OID值时出现NoSuchInstance消息

问题描述

我正在尝试通过SNMP使两台计算机通信。我正在使用普通的Windows 10笔记本电脑和树莓派4。我正在Node.js和javascript中开发这些代码,并使用“ net-snmp”。我已经启用了两者之间的snmp服务,并编写了一个简单的代码来检查它们是否都起作用。因此,我进一步走了一步,开始在他们两个之间建立一个简单的“问与答”机制,这是树莓的代码,是树莓派和树莓派的代码

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

var options = {
  port: 161,retries: 1,timeout: 10000,backoff: 1.0,transport: "udp4",trapPort: 162,version: snmp.Version1,backwardsGetNexts: true,idBitsSize: 32
 };


 /*  var varbind = {
       oid: "1.3.6.1.2.1.1.5.0",type: snmp.ObjectType.OctetString,value: "Ciaoo"
  }; */



  var session = snmp.createSession("192.168.1.11","public",options);

  var oids = ["1.3.6.1.2.1.1.5.0","1.3.6.1.2.1.1.6.0"];



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

session.close();


 }); 


 session.trap(snmp.TrapType.LinkDown,function(error) {
   if(error)
     console.error(error);


 });

这是代理代码

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

  var options = {
     port: 161,disableAuthorization: true,engineID: "8000B98380XXXXXXXXXXXX",// where the X's are random hex digits
     transport: "udp4"
 };

 var callback = function (error,data) {
     if ( error ) {
        console.error (error);
     } else {
        console.log (JSON.stringify(data,null,2));
     }
 };

 var agent = snmp.createAgent(options,callback,mib);

 var myScalarProvider = {
     name: "SysName",type: snmp.MibProviderType.Scalar,oid: "1.3.6.1.2.1.1.5.0",scalarType: snmp.ObjectType.OctetString,handler: function(mibRequest){
         mibRequest.done();
     }
 };

 var myScalarProvider1 = {
     name: "SysLoc",oid: "1.3.6.1.2.1.1.6.0",handler: function(mibRequest){
         mibRequest.done();
     }
 };

 var mib = agent.getMib();
 mib.registerProvider(myScalarProvider);
 mib.registerProvider(myScalarProvider1);
 mib.setScalarValue("SysName","Pc di Claudio");
 mib.setScalarValue("SysLoc","Cazzi miei");

因此,当我同时运行它们时,我会从代理那里收到连接已发生的通知,但从树莓派那边我会收到以下消息:

NoSuchInstance:1.3.6.1.2.1.1.5.0

NoSuchInstance:1.3.6.1.2.1.1.6.0

这就像我在执行此操作时没有为标量提供程序分配任何值,甚至在创建代理程序时添加了MIB参数。我究竟做错了什么?抱歉,这听起来可能很愚蠢,但我仍在学习过程中。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)