体育资讯网

您现在的位置是:首页 > 分类12 > 正文

分类12

snmpagent源码(snmp源码分析)

hacker2022-07-18 07:39:03分类1279
本文目录一览:1、怎么实现私有trap,怎么关闭snmpagent服务?求解,求高手

本文目录一览:

怎么实现私有trap,怎么关闭snmp agent服务?求解,求高手

发送trapsnmpagent源码你可以参照一下net-snmp给你的例子snmpagent源码,源码文件中 net-snmp-5.6.1.1\agent\mibgroup\examples\notification.cnotification.c 你的做法和给出的例子几乎一致,看一下就好了。 当然发送trap你也可以参照一下snmptrap.c这个文件,调用net-snmp接口自己组建session 组建pdu发送trap。 ------解决方案-------------------------------------------------------- 函数snmp_alarm_register(30, /* seconds */ SA_REPEAT, /* repeat (every 30 seconds). */ send_trap, /* our callback 定时器触发调用的函数*/ NULL /* no callback data needed 回调函数的返回值*/

请具体介绍一下 SNMP4J-Agent ,SNMP4J,SNMP4J-AgentX

SNMP4J是用于java开发网管系统,通过SNMP协议访问设备的。

SNMP4J-Agent是用于开发SNMP Agent程序的,是别人通过SNMP协议来访问你的Agent,你的Agent为别人提供数据,另外,这个API的License是Apachae 2.0,所以可以免费使用且不用公开源码。

SNMP4J-AgentX跟SNMP4J-Agent的区别就在于License是GPL,需要购买Commercial License或是公开源码。

详情请看两种License官方文档。

怎么利用snmp4j-agent在PC端模拟snmp服务

CISCO做snmpagent源码的还是挺规范的snmpagent源码,可以直接用MIB文件读取(在我们实验室至少可以通过)。还有就是人家应该提供了SNMP专用的工具包snmpagent源码,可以打开MY文件。如果还不行的话,可以自己编写一个SNMP获取工具(我们用的是SNMP4J),可以向目标设备161端口发UDP数据包,通过OID值获取。

200分求解:dom4j 使用XPATH解析。。诡异的问题

snmpagent源码我也遇到同样snmpagent源码的问题,现在也没找到为什么!

snmpagent源码我的状况是这样的:

xml文件为 kpi.xml,如下

?xml version="1.0" encoding="UTF-8"?

xmlconfig

kpi id="1" name="CPU占用"

coltype name="SNMP" support="true"

snmpagentpublic|netcool/snmpagent

snmpruleid0/snmpruleid

/kpi

kpi id="2" name="XXX占用"

coltype name="SM" support="false"

snmpagentpublic|netcool/snmpagent

snmpruleid0/snmpruleid

/kpi

/xmlconfig

main函数里面方法如下:

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

public static void main(String args[]) {

String file = "d://kpi.xml";

int n = ModiXMLFile(file);

}

public static void ModiXMLFile(String filename) {

try {

SAXReader saxReader = new SAXReader();

Document document = saxReader.read(new File(filename));

int m = 0 ;

//得到kpi id的最大值

List list = document.selectNode("/xmlconfig/kpi");

Iterator iter = list.iterator();

while (iter.hasNext()) {

Element bookElement = (Element) iter.next();

if(!(bookElement.attributeValue("id")==null || bookElement.attributeValue("id").equalsIgnoreCase(""))){

int num = Integer.parseInt(bookElement.attributeValue("id"));

if(num=m){

m= num;

}

}

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

运行能得到 kpi id的最大值是多少

但换个系统,在真正到公司的软机的系统上,就报

org.dom4j.InvalidXPathException: Invalid XPath expression: '/xmlconfig/kpi'. Caused by: org/jaxen/dom4j/Dom4jXPath

网上查snmpagent源码了很久资料也没搞明白,有说是jdk版本的原因,有说是加载的dom4j包不一样,但都不对.

实在没办法snmpagent源码了,用了个变通的办法,直接

Element root = document.getRootElement();

for ( Iterator i = root.elementIterator(); i.hasNext(); ) {

Element kpi = (Element) i.next();

if(!(kpi.attributeValue("id")==null || kpi.attributeValue("id").equalsIgnoreCase(""))){

int num = Integer.parseInt(kpi.attributeValue("id"));

if(num=m){

m= num;

}

}

}

不再通过 Xpath .

希望能和贴主人一起探讨一下,这个问题的真正原因,随时关注此提问!

如何利用snmp4j-agent在PC端模拟snmp服务的相关文章推荐

如何利用snmp4j-agent在PC端模拟snmp服务

? ? 想在PC端起一个snmp模拟器,在网上搜了一段时间,例子也不算少,但一般都有些问题,可能是自己某个地方出错了。

? ? 索性直接从源码snmpagent源码的example开始,看了几天snmp4j-agent源码后,虽然啥也没看懂,但还是被我找到了一些突破口。

? ? 直接将org.snmp4j.agent.example下snmpagent源码的例子复制出来,然后修改即可。这几天刚写好的例子,也懒得作修饰了。

1. 将源码中的SampleAgentConfig.properties(org.snmp4j.agent.example下)复制出来。

2. 建立如图的包层次结构

? ? ? ? ??

3. 代码明细

?

SysDate.java

package celul.snmpSeverTest.scalar;import org.snmp4j.agent.mo.MOAccessImpl;import org.snmp4j.agent.mo.MOScalar;import org.snmp4j.smi.OID;import org.snmp4j.smi.OctetString;public class SysDate extends MOScalarOctetString {public SysDate() {super(new OID("1.3.6.1.4.1.12321.1.1.1.2.0"), MOAccessImpl.ACCESS_READ_ONLY, new OctetString("com"));}@Overridepublic OctetString getValue() {return new OctetString("com");}}

?SysInitDevice.java

package celul.snmpSeverTest.scalar;import org.snmp4j.agent.mo.MOAccessImpl;import org.snmp4j.agent.mo.MOScalar;import org.snmp4j.smi.Integer32;import org.snmp4j.smi.OID;public class SysInitDevice extends MOScalarInteger32 {public SysInitDevice() {super(new OID("1.3.6.1.4.1.12321.1.1.1.3.0"), MOAccessImpl.ACCESS_READ_WRITE, new Integer32(3));}@Overridepublic Integer32 getValue() {return super.getValue();}@Overridepublic int setValue(Integer32 value) {return super.setValue(value);}}

?SysInitParams.java与SysTimeUp.java不再赘述。

?

?

MoTableUtil.java

?

package celul.snmpSeverTest.table;import org.snmp4j.agent.MOAccess;import org.snmp4j.agent.mo.DefaultMOMutableTableModel;import org.snmp4j.agent.mo.DefaultMOTable;import org.snmp4j.agent.mo.DefaultMOTableRow;import org.snmp4j.agent.mo.MOAccessImpl;import org.snmp4j.agent.mo.MOColumn;import org.snmp4j.agent.mo.MOMutableColumn;import org.snmp4j.agent.mo.MOTableIndex;import org.snmp4j.agent.mo.MOTableSubIndex;import org.snmp4j.agent.mo.snmp.RowStatus;import org.snmp4j.smi.Integer32;import org.snmp4j.smi.OID;import org.snmp4j.smi.OctetString;import org.snmp4j.smi.SMIConstants;import org.snmp4j.smi.Variable;import celul.snmpSeverTest.Constant;public class MoTableUtil{@SuppressWarnings("rawtypes")private static DefaultMOTable emuTable;private static final String emuTableEntryOid = "1.3.6.1.4.1.19547.1.6.1.1.1";private static final Object[][] columnEmuDefined = {{ 1, "1", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 2, "2", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 3, "3", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 4, "4", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 5, "5", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 6, "6", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 7, "7", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 8, "8", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 9, "9", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 10, Constant.ROWSTATUS, MOAccessImpl.ACCESS_READ_CREATE, SMIConstants.SYNTAX_INTEGER32 } };@SuppressWarnings("rawtypes")private static DefaultMOTable edfaTable;private static final String edfaTableEntryOid = "1.3.6.1.4.1.19547.1.6.1.2.1";private static final Object[][] columnEdfaDefined = {{ 1, "1", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 2, "2", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 3, "3", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 4, "4", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 5, "5", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 6, "6", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 7, "7", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 8, "8", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 9, "9", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 10, "10", MOAccessImpl.ACCESS_READ_ONLY, SMIConstants.SYNTAX_OCTET_STRING },{ 11, Constant.ROWSTATUS, MOAccessImpl.ACCESS_READ_CREATE, SMIConstants.SYNTAX_INTEGER32 } };//private static DefaultMOTable defaTable;@SuppressWarnings("rawtypes")public static DefaultMOTable getEmuTable(){if(emuTable == null){initEmuTable();}return emuTable;}@SuppressWarnings("rawtypes")public static DefaultMOTable getEdfaTable(){if(edfaTable == null){initEdfaTable();}return edfaTable;}@SuppressWarnings({ "rawtypes", "unchecked"

发表评论

评论列表

  • 南殷月棠(2022-07-18 15:19:15)回复取消回复

    ort org.snmp4j.smi.OID;import org.snmp4j.smi.OctetString;import org.snmp4j.smi.SMIConstants;import org.snmp4j.

  • 痴妓岁笙(2022-07-18 15:53:58)回复取消回复

    ger.parseInt(bookElement.attributeValue("id")); if(num=m){ m= num; } } } } ca

  • 慵吋邮友(2022-07-18 19:22:27)回复取消回复

    4j-agent源码后,虽然啥也没看懂,但还是被我找到了一些突破口。? ? 直接将org.snmp4j.agent.example下snmpagent源码的例子复制出来,然后修改即可。这几天刚写好的例子,也懒得