SNMP デバイス (スイッチなど) のように機能するアプリを構築して、snmp 監視アプリ (solarwinds、zabbix など) を使用していくつかの項目を監視したい
SNMPsharpNet コンポーネントを使用し、Get メッセージを正常に受信しました. しかし、メッセージに応答できません. ここを見てください:
UdpTarget target = new UdpTarget((IPAddress)new IpAddress(_peerIP.Address),162,5000,3);
nmpV2Packet pkt = new SnmpV2Packet();
try
{
pkt.decode(_inbuffer, inlen);
}
pkt.Pdu.VbList.RemoveAt(0);
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.1.0"), new OctetString("Micromoje")); //sysDescr
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.2.0"), new Oid("1.3.6.1.2.1.1.0")); //sysObjectID
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.3.0"), new TimeTicks(2324)); //sysUpTime
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.4.0"), new OctetString("DCU Nodes")); //sysContact
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.5.0"), new OctetString("DCU Managing")); //sysName
AgentParameters aparam = new AgentParameters(SnmpVersion.Ver2, new OctetString("public"));
SnmpV2Packet response = new SnmpV2Packet("public");
response = target.Request(pkt.Pdu, aparam) as SnmpV2Packet;
このコードを使用すると、「リクエストが最大再試行回数に達しました」というエラー メッセージが表示されます。
次に、このコードを試しました:
pkt.Pdu.VbList.RemoveAt(0);
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.1.0"), new OctetString("Micromoje")); //sysDescr
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.2.0"), new Oid("1.3.6.1.2.1.1.0")); //sysObjectID
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.3.0"), new TimeTicks(2324)); //sysUpTime
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.4.0"), new OctetString("DCU Nodes")); //sysContact
pkt.Pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.5.0"), new OctetString("DCU Managing")); //sysName
SnmpV2Packet response = new SnmpV2Packet("public"); //= target.Request(pkt.Pdu, aparam) as SnmpV2Packet;
response.Pdu.SetVbList(pkt.Pdu.VbList);
response.Pdu.Type = PduType.Set;
try
{
byte[] buf = response.encode();
_socket.SendTo(buf, (EndPoint)_peerIP);
}
このコードを使用すると、監視システム側で「提供された読み取り/書き込みコミュニティ文字列に応答しません」というエラー メッセージが表示されます。
最後に、アプリを SNMP デバイスとして接続できず、接続のテストに失敗しました。助けてください。