首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何作为代理使用snmpSharpNet响应SNMP监控系统

如何作为代理使用snmpSharpNet响应SNMP监控系统
EN

Stack Overflow用户
提问于 2016-06-22 17:01:00
回答 1查看 1.5K关注 0票数 0

我想构建一个像SNMP设备(如交换机等)工作的应用程序,以使用snmp监控应用程序(如solarwinds,zabbix等)来监控一些项目。

我使用了SNMPsharpNet组件,成功接收到Get消息,但无法响应消息,请看这里:

代码语言:javascript
复制
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;

当我使用此代码时,我收到错误消息“请求已达到最大重试次数”。

然后我尝试了下面的代码:

代码语言:javascript
复制
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);
}

当我使用这个代码时,我在监控系统端收到错误消息‘not respond with the supplied read/write community string’。

最后我无法连接我的应用程序作为SNMP设备和测试连接失败,请帮助我,

EN

回答 1

Stack Overflow用户

发布于 2020-09-30 00:05:07

您需要使用相同的RequestId进行应答。此外,类型应为PduType.Response。我更新了你的代码:

代码语言:javascript
复制
int requestId = pkt.Pdu.RequestId;
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, param) as SnmpV2Packet;
response.Pdu.SetVbList(pkt.Pdu.VbList);
response.Pdu.Type = PduType.Response;
response.Pdu.RequestId = requestId;

try
{
    byte[] buf = response.encode();
    _socket.SendTo(buf, (EndPoint)_peerIP);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37963262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档