使用SNMP4J可以很方便的实现一个SNMP NMS的功能。
前一篇介绍了SNMPv1/v2的编程 http://blog.csdn.net/fw0124/article/details/8559564
对于SNMPv3,不同点有
1) 需要创建USM对象并添加User,
关于USM->http://blog.csdn.net/fw0124/article/details/8557029
2) 需要创建UserTarget对象,而不是创建CommunityTarget对象。
3) 需要创建ScopedPDU对象,而不是PDU对象。
使用SNMP4J进行SNMPv3编程的步骤如下:
1) 创建Snmp对象snmp
2) 创建USM对象,并创建User,添加到USM对象中。
创建User是需要指定securityName,认证协议MD5/SHA1,认证密钥,加密算法DES/AES,加密密钥。
添加User到USM对象中时候,可以指定engineID也可以不指定。
3) 创建UserTarget对象target,并指定version, address, timeout, retry等参数,这些和SNMPv1/v2相同。
另外还必须指定SNMPv3特有的两个参数SecurityLevel和SecurityName。
SNMP4J会根据这个SecurityName到USM的UserTable中查找匹配的User,用这个User的信息进行认证加密处理。
查找的时候必须同时匹配SecurityName和engineID,但是如果添加User到USM对象中时候,没有指定engineID,那么SecurityName相同即匹配成功。
4) 创建ScopedPDU对象pdu,并指定操作类型(GET/GETNEXT/GETBULK/SET), 添加VariableBinding(也就是待操作的OID),
如果是GETBULK操作,还可以指定MaxRepetitions和NonRepeaters。
注意一定要指定MaxRepetitions,默认值是0
使用Java进行SNMP编程-SNMP4J-SNMPv3-代码实例
最新推荐文章于 2024-08-23 10:57:19 发布
本文介绍了如何使用SNMP4J库进行SNMPv3编程,包括创建USM对象、设置User、建立UserTarget、创建ScopedPDU以及执行SNMP请求。文中提供了一个代码实例,涵盖了GET和Walk操作,强调了SNMPv3特有的SecurityLevel、SecurityName、engineID和contextEngineId、contextName的设置。
摘要由CSDN通过智能技术生成