什么设置SNMP错误和错误索引字段

什么设置SNMP错误和错误索引字段,snmp,net-snmp,Snmp,Net Snmp,我读过几篇关于SNMP协议的RFC,它们通常都是以神秘和不透明的方式编写的,因此我可能错过了正确的信息,我为可能是一个简单的问题提前道歉 例如,我不清楚get命令中的哪种错误会在snmp get响应消息中设置错误和错误索引字段。由于我一直在使用NetSNMP发送命令(以及demo.snmplabs.com上的SNMP模拟器),因此我无法发送格式不正确的消息,以查看我将得到何种响应。我已经开始编写自己的SNMP测试工具(使用Visual Basic),只是为了能够发送格式不正确的消息,但要将其用作

我读过几篇关于SNMP协议的RFC,它们通常都是以神秘和不透明的方式编写的,因此我可能错过了正确的信息,我为可能是一个简单的问题提前道歉

例如,我不清楚get命令中的哪种错误会在snmp get响应消息中设置错误和错误索引字段。由于我一直在使用NetSNMP发送命令(以及demo.snmplabs.com上的SNMP模拟器),因此我无法发送格式不正确的消息,以查看我将得到何种响应。我已经开始编写自己的SNMP测试工具(使用Visual Basic),只是为了能够发送格式不正确的消息,但要将其用作经过验证的测试工具,还需要相当多的工作

当发送对不存在的OID或错误数据类型的请求时,Net SNMP似乎在不需要错误/错误索引值的情况下处理错误


任何建议都应该可以为SNMP GET生成错误,但可能更容易从为集合生成错误开始

➜  snmpset -v 2c -c private  demohost  sysName.0 s "foo" 
SNMPv2-MIB::sysName.0 = STRING: foo
在下面的版本中,代理拒绝该集

➜  snmpset -v 2c -c private  demohost   ucdDemoPublicString.0 s "TEST" 
Error in packet.
Reason: noCreation (That table does not support row creation or that object can not ever be created)
Failed object: UCD-DEMO-MIB::ucdDemoPublicString.0

使用
-d
来回查看数据包。

谢谢您的建议。我一直在故意创建错误的定义(例如,MIB数据类型与实际消息数据类型不匹配),但我无法让代理将错误和错误索引字段设置为0以外的值。我想,要设置这些错误字段,snmp消息本身不应该正确格式化(NetSNMP无法做到这一点),因此这意味着我必须创建自己的“格式错误”消息(例如,在“错误ASN.1编码”的意义上)。这就是我现在的方向,所以我正在用Visual basic编写一个工具。我还可以强制我的SNMP代理(我自己的代码在Cortex-M3上运行)返回格式不正确的消息,以查看Net SNMP如何处理这一问题。