`
yr512656630
  • 浏览: 320285 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

adventnet trap

阅读更多
研究了adventnet  的API接口应用,走了很多弯路,为了给大家做指导,特此记录。

首先,adventnet分为高版本和低版本的API。以trap为例:高版本Using High-Level API,是在低版本的基础上在封装了一层,对于底版本我必须知道agent的upd端口号和地址,而高版本不需要知道,它会自动分发到agent端。

Using Low-Level API
public 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());
        }
    }
}
1
1
分享到:
评论

相关推荐

    SNMP 开发工具adventnet

    AdventNet是Zoho Corporation的一个子品牌,提供了多种网络管理和开发工具,其中就包括SNMP相关的工具。在SNMP开发过程中,AdventNet工具能够极大地简化工作流程,提升效率。 1. SNMP基本概念: SNMP由三部分组成...

    AdventNet snmp 简单网管协议 从接点取数据――之 Card 检测.zip

    AdventNet的实现可能还包括一些高级特性,比如陷阱(Trap)功能。当网络设备上的Card发生异常,如掉线、速率变化等,设备会自动发送一个Trap通知给管理站,这样可以实现快速故障响应。 文件列表中的“AdventNet ...

    AdventNet_SNMP_Agent_Linux_2_0_0.zip_adventNet agent_adventnet_a

    AdventNet SNMP Agent是AdventNet公司提供的一个开源SNMP代理软件,主要用于在Linux系统上实现SNMP功能,帮助用户更便捷地管理和监控网络环境。 AdventNet SNMP Agent 2.0.0针对Linux操作系统进行了优化,提供了...

    监视通信线路,路由器或交换机SNMP trap的配置

    AdventNet MibBrowser是一款网络管理工具,其Trap Viewer功能可接收和解析SNMP trap,提供更直观的界面展示网络设备的状态变化。 5. **网络拓扑**: 实验中通常会搭建简单的网络拓扑,包括两台PC机和一台路由器或...

    AdventNetSNMPAPI

    5. **Trap Handling**: 该API支持SNMP陷阱(Trap)的发送和接收。陷阱是代理向管理站发送的异步通知,通常用于报告网络事件或异常情况。 6. **Examples**: 压缩包中的例子代码是学习如何使用AdventNet SNMP API 的...

    adventnetsnmputilities_5_windows

    - **SNMP Trap Viewer**:接收并显示SNMP陷阱消息,有助于故障诊断和实时监控。 - **SNMP Walk**:遍历设备的MIB结构,收集所有对象实例的值,对于数据分析和报告生成非常有用。 - **SNMP Get/Set**:执行SNMP ...

    SNMP Advent Dll

    另一方面,"AdventNetSnmp.dll" 可能包含了SNMP协议的基本操作,如Get、Set请求以及Trap的发送和接收功能。这个库文件可能提供了封装好的函数,用于建立和维护SNMP会话,处理PDU(Protocol Data Unit)数据,并支持...

    用snmp获取网络设备的指标信息

    6. **持续监控**:为了实时监控网络设备,可以定期重复上述过程,或者设置陷阱(Trap)监听,当设备状态发生变化时,由设备主动发送通知。 在实际应用中,Adventnet SNMP API还支持更复杂的操作,如设置设备配置、...

    snmp小工具

    个人留用版本SNMP ,很不错的哈。希望对你有用。个人留用版本SNMP,很不错的哈。希望对你有用。

    SNMP开发包

    在本文中,我们将深入探讨两个常用的SNMP开发包:AdventNet SNMP API和snmp4j。 首先,AdventNet SNMP API 是一个功能强大的SNMP库,尽管它没有公开源代码,但提供了丰富的API接口,使得开发者能够轻松地在Java应用...

    实验二-SNMP-MIB信息的访问.pdf

    2. 使用MIB浏览器:MIB浏览器是图形化的工具,用于查看MIB树结构,例如AdventNet MIB浏览器或iReasoning MIBBrowser。用户需输入被管理设备的IP地址和共同体名称以连接到设备。 3. 访问MIB对象:MIB浏览器提供了get...

    北邮信息工程 网管实验二

    实验内容包括启动和配置SNMP服务,熟悉MIB浏览器的操作,分析MIB-2树结构,以及通过get、getNext、set、trap等操作访问MIB对象的值。 【实验原理】 SNMP作为一个网络管理标准,允许网络管理员远程收集和配置网络...

    基于SNMP/MIB的网络数据获取系统设计与实现.rar

    这包括设置SNMP版本(如SNMPv1、v2c或v3),定义社区字符串(用于认证和授权),以及处理GET、SET和TRAP请求。服务器端(网络设备)需要配置为支持SNMP,并暴露必要的MIB信息。客户端(管理站)则通过发送SNMP请求来...

    C#基于SnmpSharpNet做的SNMP客户端(SNMP V1和V2版本)

    它支持SNMP V1、V2c和V3版本,涵盖了Get、Set、Trap接收等功能。使用该库,开发者可以创建SNMP代理,执行读取、写入操作,甚至处理SNMP陷阱。 **SNMP V1和SNMP V2c的区别** SNMP V1是最原始的版本,主要用于简单的...

    网络管理实验二

    SNMP报文由PDU(协议数据单元)组成,包括GetRequest、SetRequest、GetNextRequest和Trap四种基本类型。每个PDU包含了请求ID、错误状态、变量绑定列表等字段,变量绑定列表用于指定需要获取或修改的MIB对象。 **MIB...

Global site tag (gtag.js) - Google Analytics