网上这样的例子很多,我的第一个程序也是从网上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 秒)
本文介绍如何使用SNMP4J库在Java中实现简单的SNMP GET操作来获取远程设备的信息。示例代码展示了配置SNMP客户端、发送GET请求并解析响应的过程。
2万+

被折叠的 条评论
为什么被折叠?



