研究了adventnet 的API接口应用,走了很多弯路,为了给大家做指导,特此记录。
首先,adventnet分为高版本和低版本的API。以trap为例:高版本Using High-Level API,是在低版本的基础上在封装了一层,对于底版本我必须知道agent的upd端口号和地址,而高版本不需要知道,它会自动分发到agent端。
Using Low-Level APIpublic class Sendv2cTrap
{
public static void main(String args[])
{
if( args.length == 0)
{
System.out.println("Usage : java SnmpSendTrap hostname");
System.exit(0);
}
// 需要发给哪个主机的IP地址
String remoteHost = args[0];
// Start SNMP API
SnmpAPI api = new SnmpAPI();
api.setDebug(true);
SnmpSession session = new SnmpSession(api);
// set remote Host
UDPProtocolOptions option = new UDPProtocolOptions(hostname);
SnmpPDU pdu = new SnmpPDU();
pdu.setProtocolOptions(option);
// 需要发给哪个主机的端口号
option.setRemotePort(8001);
//open the session
try
{
session.open();
}
catch (SnmpException e )
{
System.err.println("Error opening socket: "+e);
}
// Build SNMPv2c Trap PDU
pdu.setCommand(SnmpAPI.TRP2_REQ_MSG );
//参数一
SnmpVar var = null;
SnmpOID oid = new SnmpOID(".1.3.6.1.2.1.1.3.0");
try
{
//create SnmpVar instance
var = SnmpVar.createVariable(systemuptime, SnmpAPI.TIMETICKS);
}
catch(SnmpException e)
{
System.err.println("Cannot create variable: " + oid + " with value: " + systemuptime);
return;
}
//create varbind
SnmpVarBind varbind = new SnmpVarBind(oid,var);
// add variable binding
pdu.addVariableBinding(varbind);
//参数二
oid = new SnmpOID(".1.3.6.1.6.3.1.1.4.1.0");
try
{
//create SnmpVar instance
var = SnmpVar.createVariable(trapoidvalue,SnmpAPI.OBJID);
}
catch(SnmpException e)
{
System.err.println("Cannot create variable: " + oid + " with value: " + trapoidvalue);
return;
}
//create varbind
SnmpVarBind varbind = new SnmpVarBind(oid,var);
// add variable binding
pdu.addVariableBinding(varbind);
// send PDU
try
{
session.send(pdu);
}
catch (SnmpException e)
{
System.err.println("Sending PDU"+e.getMessage());
}
System.exit(0);
}
以上是低版本,一般来说,是我知道对方的IP地址在做trap,这种不适合我的需要,我目前是直接分发出去。所以用高版本。
Using High-Level API
public class Sendv2Trap {
private static final String OID = "1.3.6.1.2.33779.1";
public static void main(String args[]) {
// instantiate SNMP target bean
SnmpTarget target = new SnmpTarget();
//本机主机地址
target.settargetHost("hostname");
//端口号
target.setTargetPort(162);
//Set the SNMP version.
target.setSnmpVersion(target.VERSION2C);
//值为public
target.setCommunity(community);
//测试值
String values[] = {"testing"};
try
{
//创建snmpoid
SnmpOID snmpOID = new SnmpOID(OID);
//通过oid绑定参数和变量
SnmpVar snmpVar = SnmpVar.createVariable("test Trap", SnmpAPI.STRING);
//发送trap
this.eventAPI.snmpSendNotification(1000, snmpOID, new SnmpVar[] { snmpVar }); }
catch (Exception e)
{
System.err.println("Error Sending Trap: "+e.getMessage());
}
System.exit(0);
}
最后就是接收端接收了。
public class SnmpTrapd implements TrapListener {
public static void main(String args[]) {
// instantiate SNMP Trap Receiver bean
SnmpTrapReceiver trapreceiver = new SnmpTrapReceiver();
// set the port in which the trap is received
trapreceiver.setPort(162);
// register the listener for trap events
trapreceiver.addTrapListener(new SnmpTrapd());
System.out.println("Waiting to receive traps .......");
}
@Override
public void receivedTrap(TrapEvent trap) {
System.out.println("Got a trap from: " + trap.getRemoteHost());
// print PDU details
System.out.println(((SnmpTrapReceiver) trap.getSource()).getMibOperations().toString(trap.getTrapPDU()));
if (trap.getTrapPDU().getCommand() == SnmpAPI.TRP_REQ_MSG) {
com.adventnet.snmp.mibs.MibTrap trapDefn = trap.getTrapDefinition();
if (trapDefn != null) // print name and description
System.out.println("Trap Name: " + trapDefn.getName() + "\nDescr: " + trapDefn.getDescription());
}
}
}
分享到:
相关推荐
AdventNet是Zoho Corporation的一个子品牌,提供了多种网络管理和开发工具,其中就包括SNMP相关的工具。在SNMP开发过程中,AdventNet工具能够极大地简化工作流程,提升效率。 1. SNMP基本概念: SNMP由三部分组成...
AdventNet的实现可能还包括一些高级特性,比如陷阱(Trap)功能。当网络设备上的Card发生异常,如掉线、速率变化等,设备会自动发送一个Trap通知给管理站,这样可以实现快速故障响应。 文件列表中的“AdventNet ...
AdventNet SNMP Agent是AdventNet公司提供的一个开源SNMP代理软件,主要用于在Linux系统上实现SNMP功能,帮助用户更便捷地管理和监控网络环境。 AdventNet SNMP Agent 2.0.0针对Linux操作系统进行了优化,提供了...
AdventNet MibBrowser是一款网络管理工具,其Trap Viewer功能可接收和解析SNMP trap,提供更直观的界面展示网络设备的状态变化。 5. **网络拓扑**: 实验中通常会搭建简单的网络拓扑,包括两台PC机和一台路由器或...
5. **Trap Handling**: 该API支持SNMP陷阱(Trap)的发送和接收。陷阱是代理向管理站发送的异步通知,通常用于报告网络事件或异常情况。 6. **Examples**: 压缩包中的例子代码是学习如何使用AdventNet SNMP API 的...
- **SNMP Trap Viewer**:接收并显示SNMP陷阱消息,有助于故障诊断和实时监控。 - **SNMP Walk**:遍历设备的MIB结构,收集所有对象实例的值,对于数据分析和报告生成非常有用。 - **SNMP Get/Set**:执行SNMP ...
另一方面,"AdventNetSnmp.dll" 可能包含了SNMP协议的基本操作,如Get、Set请求以及Trap的发送和接收功能。这个库文件可能提供了封装好的函数,用于建立和维护SNMP会话,处理PDU(Protocol Data Unit)数据,并支持...
6. **持续监控**:为了实时监控网络设备,可以定期重复上述过程,或者设置陷阱(Trap)监听,当设备状态发生变化时,由设备主动发送通知。 在实际应用中,Adventnet SNMP API还支持更复杂的操作,如设置设备配置、...
个人留用版本SNMP ,很不错的哈。希望对你有用。个人留用版本SNMP,很不错的哈。希望对你有用。
它支持SNMP V1、V2c和V3版本,涵盖了Get、Set、Trap接收等功能。使用该库,开发者可以创建SNMP代理,执行读取、写入操作,甚至处理SNMP陷阱。 **SNMP V1和SNMP V2c的区别** SNMP V1是最原始的版本,主要用于简单的...
在本文中,我们将深入探讨两个常用的SNMP开发包:AdventNet SNMP API和snmp4j。 首先,AdventNet SNMP API 是一个功能强大的SNMP库,尽管它没有公开源代码,但提供了丰富的API接口,使得开发者能够轻松地在Java应用...
2. 使用MIB浏览器:MIB浏览器是图形化的工具,用于查看MIB树结构,例如AdventNet MIB浏览器或iReasoning MIBBrowser。用户需输入被管理设备的IP地址和共同体名称以连接到设备。 3. 访问MIB对象:MIB浏览器提供了get...
实验内容包括启动和配置SNMP服务,熟悉MIB浏览器的操作,分析MIB-2树结构,以及通过get、getNext、set、trap等操作访问MIB对象的值。 【实验原理】 SNMP作为一个网络管理标准,允许网络管理员远程收集和配置网络...
这包括设置SNMP版本(如SNMPv1、v2c或v3),定义社区字符串(用于认证和授权),以及处理GET、SET和TRAP请求。服务器端(网络设备)需要配置为支持SNMP,并暴露必要的MIB信息。客户端(管理站)则通过发送SNMP请求来...
SNMP报文由PDU(协议数据单元)组成,包括GetRequest、SetRequest、GetNextRequest和Trap四种基本类型。每个PDU包含了请求ID、错误状态、变量绑定列表等字段,变量绑定列表用于指定需要获取或修改的MIB对象。 **MIB...