网上这样的例子很多,我的第一个程序也是从网上DOWN下来的。但是我的程序结果没有Response信息。后来才发现应该是组件的管理监视工具没有装。我没有找到XP的。于是就跑在服务器上试了下。不多说贴代码:(需要SNMP4J的JAR包下载地址www.snmp4j.org)
init:
deps-jar:
compile-single:
run-single:
[INFO] 新建管理的设备
[INFO] 设置共同体名 public
[INFO] 设置目标Agent地址192.168.100.223/161
[INFO] 设置重试次数
[INFO] 设置超时时间
[INFO] 设置版本
Request UDP:GET[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.1.0 = Null; 1.3.6.1.2.1.1.2.0 = Null; 1.3.6.1.2.1.1.3.0 = Null]]
[INFO] respEvt.getResponse()=RESPONSE[requestID=442376585, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.1.0 = Linux masdevlop 2.6.9-42.ELsmp #1 SMP Sat Aug 12 09:39:11 CDT 2006 i686; 1.3.6.1.2.1.1.2.0 = 1.3.6.1.4.1.28357.1; 1.3.6.1.2.1.1.3.0 = 12 days, 3:34:19.64]]
1.3.6.1.2.1.1.1.0:Linux masdevlop 2.6.9-42.ELsmp #1 SMP Sat Aug 12 09:39:11 CDT 2006 i686
1.3.6.1.2.1.1.2.0:1.3.6.1.4.1.28357.1
1.3.6.1.2.1.1.3.0:12 days, 3:34:19.64
成功生成(总时间:1 秒)
import java.io.IOException; import java.util.Vector; import org.apache.log4j.Logger; import org.log.snmp.util.Log4jUtil; import org.snmp4j.CommunityTarget; import org.snmp4j.PDU; import org.snmp4j.Snmp; import org.snmp4j.TransportMapping; import org.snmp4j.event.ResponseEvent; import org.snmp4j.smi.Address; import org.snmp4j.smi.GenericAddress; import org.snmp4j.smi.OID; import org.snmp4j.smi.OctetString; import org.snmp4j.smi.VariableBinding; import org.snmp4j.transport.DefaultUdpTransportMapping; public class Test { private static Logger log = Logger.getLogger(Test.class); public static void main(String[] args) { try { Address targetAddress = GenericAddress.parse("udp:192.168.100.223/161"); // Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161"); TransportMapping transport = new DefaultUdpTransportMapping(); Snmp snmp = new Snmp(transport); transport.listen();//监听 log.info("新建管理的设备"); CommunityTarget target = new CommunityTarget(); log.info("设置共同体名 public"); target.setCommunity(new OctetString("public"));//设置共同体名 log.info("设置目标Agent地址" + targetAddress.toString()); target.setAddress(targetAddress);//设置目标Agent地址 log.info("设置重试次数"); target.setRetries(2);//重试次数 log.info("设置超时时间"); target.setTimeout(5000);//超时设置 log.info("设置版本"); target.setVersion(1);//版本 PDU request = new PDU(); request.setType(PDU.GET);//操作类型GET // request.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1"))); request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.1.0")));//OID_sysDescr request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.2.0")));//OID_sysObjectID request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.3.0")));//OID_sysUpTime System.out.println("Request UDP:" + request); ResponseEvent respEvt = snmp.send(request, target); //读取得到的绑定变量 if (respEvt != null && respEvt.getResponse() != null) { log.info("respEvt.getResponse()=" + respEvt.getResponse()); Vector revBindings = respEvt.getResponse().getVariableBindings(); for (int i = 0; i < revBindings.size(); i++) { VariableBinding vbs = revBindings.elementAt(i); System.out.println(vbs.getOid() + ":" + vbs.getVariable()); } } } catch (IOException e) { e.printStackTrace(); } } }运行结果:
init:
deps-jar:
compile-single:
run-single:
[INFO] 新建管理的设备
[INFO] 设置共同体名 public
[INFO] 设置目标Agent地址192.168.100.223/161
[INFO] 设置重试次数
[INFO] 设置超时时间
[INFO] 设置版本
Request UDP:GET[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.1.0 = Null; 1.3.6.1.2.1.1.2.0 = Null; 1.3.6.1.2.1.1.3.0 = Null]]
[INFO] respEvt.getResponse()=RESPONSE[requestID=442376585, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.1.0 = Linux masdevlop 2.6.9-42.ELsmp #1 SMP Sat Aug 12 09:39:11 CDT 2006 i686; 1.3.6.1.2.1.1.2.0 = 1.3.6.1.4.1.28357.1; 1.3.6.1.2.1.1.3.0 = 12 days, 3:34:19.64]]
1.3.6.1.2.1.1.1.0:Linux masdevlop 2.6.9-42.ELsmp #1 SMP Sat Aug 12 09:39:11 CDT 2006 i686
1.3.6.1.2.1.1.2.0:1.3.6.1.4.1.28357.1
1.3.6.1.2.1.1.3.0:12 days, 3:34:19.64
成功生成(总时间:1 秒)