我尝试查询Cisco SMB(小型企业交换机)以读取其主机名。
我的代码返回"不在时间窗口(1.3.6.1.6.3.15.1.1.2.0)。
Net-Snmp工作正常。我发现使用wireshark的不同之处在于net-snmp在收到不及时窗口错误后设置了msgAuthorativeEngineTime。
Discovery discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu);
ReportMessage report = discovery.GetResponse(60000, new IPEndPoint(IPAddress.Parse("10.105.9.10"), 161));
OctetString username = new OctetString("test");
var auth = new SHA1AuthenticationProvider(new OctetString("Testtest123!"));
var priv = new DESPrivacyProvider(new OctetString("Testtest123!"), auth);
// read switch hostname
GetRequestMessage request = new GetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, username, new List<Variable> { new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.5.0")) }, priv, Messenger.MaxMessageSize, report);
ISnmpMessage reply = request.GetResponse(60000, router); (not in time window)
的wireshark屏幕截图
感谢您的帮助!
答案 0 :(得分:0)
根据snmpget
示例(更新链接here),您必须调用两次GetRequestMessage
方法。请注意,代码在第一次调用中使用了 report
变量,然后在后者中使用了 reply
变量,否则它将无法工作(= not in time window 消息)(我浪费了半天时间得到这个!)