如何在不传递SNMP版本的情况下对OID的SNMP执行GET方法。
在我的例子中,一些设备响应V1.0,另一些响应V2.0。
我在OIDVIEW中遇到过,有一个“自动”的SNMP版本,而不是通过版本。
我知道V3.0需要密码和用户名。在V1.0和V2.0的情况下,它只是一个社区。
public static string GetData(string ipaddress)
{
string community = "private", response = "";
SimpleSnmp snmp = new SimpleSnmp(ipaddress, community);
if (!snmp.Valid)
response="ip address is invalid. -" + ipaddress;
Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver2,
new string[] { "1.3.6.1.2.1.1.1.0" });
if (result == null)
response=("No results received. -" + ipaddress);
else
{
foreach (KeyValuePair<Oid, AsnType> kvp in result)
response = kvp.Value.ToString();
}
return response;
}我期待着像SnmpVersion.Automatic和SnmpVersion.Ver1 , Ver2 , Ver3一样的东西
有没有使用snmpsharpnet或其他组件的解决方案?
发布于 2014-03-12 12:52:01
如果您花一些时间研究RFC文档,例如RFC3584,
https://www.rfc-editor.org/rfc/rfc3584
您将看到,即使是v1和v2c也不同。
#SNMP被设计为低级库,它不会试图成为OIDVIEW之类的应用程序级别的东西。任何细节都不应该对用户隐藏,这就是为什么没有“自动”。
"Automatic“是SNMP RFC文档之外的内容。OIDVIEW可能会将其定义为一种选择最适合用户的版本的算法,但我不认为#SNMP需要支持这种供应商定义的行为。
当然,您可以查看snmpsharpnet或其他组件。
https://stackoverflow.com/questions/22339976
复制相似问题