Snmp Package API 常被人忽视的Agent开发
Agent功能,可以使当前主机成为一台可以接收和处理从客户端发来的GET,GETNEXT,SET,GETBULK等SNMP REQUEST请求的网络设备.
多数入门级SNMP开发框架不支持Agent,Snmp Package API Agent开发,也是其新版本增加的功能.
可以使你的软件产品的硬件平台具有被SNMP管理的功能,而又不需要设置安装一些专业的SNMP软件包比如net-snmpd.这些软件包经常很大型,支持很多平台和环境(因为是通用型软件),提供丰富但很多我们用不上的功能,相应的开销也很大. 而且这些专业级软件包很难进行二次开发上,不仅有开源的问题,还牵扯到GPL,LGPL等法律问题(比如允许开源但不允许加入商业行为).
public class AgentTest implements SNMPRequestListener, Runnable { private static Logger log = Logger.getLogger(AgentTest.class); private SNMPv1AgentInterface agentInterface; private String communityName = "public"; private Thread readerThread; private SortedMap mibMap = new TreeMap(); public AgentTest() { mibInitial(); try { readerThread = new Thread(this); readerThread.start(); int version = 0; // SNMPv1 agentInterface = new SNMPv1AgentInterface(version); agentInterface.addRequestListener(this); agentInterface.setReceiveBufferSize(5120); agentInterface.startReceiving(); } catch(Exception e) { log.info("Problem starting Agent Test: " + e.toString()); } } private void mibInitial(){ mibMap.put("1.3.6.1.2.4.55.0", "hello mac!"); mibMap.put("1.3.6.1.2.4.66.0", "hello 66!"); mibMap.put("1.3.6.1.2.1.2.2.1.2", "ifDescr"); mibMap.put("1.3.6.1.2.1.2.2.1.2.99", "interface FE 1/1"); mibMap.put("1.3.6.1.2.1.2.2.1.2.100","interface FE 2/0"); |