1

我尝试查询 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)

请找一张sharp-snmp的wireshark截图:Sharp-snmp 的wireshark 截图

和 net-snmp: 在此处输入图像描述

谢谢您的帮助!

4

1 回答 1

0

根据snmpget示例(此处更新链接),您必须调用两次该GetRequestMessage方法。请注意,代码report在第一次调用中使用变量,然后reply在后者中使用变量,否则它将不起作用(=不在时间窗口消息中)(我花了半天时间才得到这个!)

于 2021-03-09T15:44:54.130 回答