Snmp Package API 常被人忽视的Agent开发
来源:互联网 发布:嘉兴菜鸟网络食堂 编辑:程序博客网 时间:2024/05/16 05:55
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");
mibMap.put("1.3.6.1.2.1.4.2.0", "sysMem");
}