【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

https://www.cnblogs.com/xdp-gacl/p/4187089.html

http://doc.okbase.net/yuanfy008/archive/265663.html

java利用snmp4j包来读取snmp协议数据(Manager端)

1 snmp简单介绍

java利用snmp4j包来读取snmp协议数据,很简单的一个流程,就是利用java来读取运行snmp协议的数据,例如服务器、PC机或者路由器等运行了snmp协议的设备。

snmp协议是什么呢?

简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个 应用层 协议(application layer protocol)、 数据库模型 (database schema)和一组资源对象。该协议能够支持 网络管理系统 ,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。该协议是互联网工程工作小组(IETF,Internet Engineering TaskForce)定义的internet协议簇的一部分。SNMP的目标是管理 互联网 Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准 网络管理 框架的影响也很大。SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。

上面是百度百科上对于snmp的一个定义,其实很简单,就是用来管理网络、查看网络信息的一种协议。

2 在本机上开启snmp协议

那么如何在本机上开启snmp协议呢?

首先,在控制面板中找到“卸载程序”;

【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

在弹出的窗口中单击“打开或关闭Windows功能”;

【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

勾选弹出窗口中的“简单网络管理协议(SNMP)”项后单击“确定”并根据提示完成安装即可。

【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

完成SNMP服务的安装后,右键单击“计算机”选择“管理”

【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

在弹出的“计算机管理”窗口中左侧导航栏中找到“服务”,并在右侧找到“SNMPService”项;

【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

鼠标双击“SNMPService”选项,在弹出的窗口中切换到“安全”选项卡中,如下图添加“接受的社区名称”和接收那些主机发出的SNMP数据包。

【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

“接受的社区名称”是自己定义的任意字符都可以,接收那些主机发出的SNMP数据包定义成你的Nagios服务器即可。到这里被监控端的Windows主机的SNMP服务就配置完成了。

其中要注意的地方就是,在开启后,还要到服务里面给snmp协议添加public权限。

3 snmp4j.jar包的下载

包用的是snmp4j.jar,下载地址是:http://www.snmp4j.org

【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

4 编码测试

SnmpData:

[java] view plain copy
  1. package com.test.snmp;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.concurrent.CountDownLatch;
  6. import java.util.concurrent.TimeUnit;
  7. import org.snmp4j.CommunityTarget;
  8. import org.snmp4j.PDU;
  9. import org.snmp4j.Snmp;
  10. import org.snmp4j.TransportMapping;
  11. import org.snmp4j.event.ResponseEvent;
  12. import org.snmp4j.event.ResponseListener;
  13. import org.snmp4j.mp.SnmpConstants;
  14. import org.snmp4j.smi.Address;
  15. import org.snmp4j.smi.GenericAddress;
  16. import org.snmp4j.smi.Integer32;
  17. import org.snmp4j.smi.Null;
  18. import org.snmp4j.smi.OID;
  19. import org.snmp4j.smi.OctetString;
  20. import org.snmp4j.smi.VariableBinding;
  21. import org.snmp4j.transport.DefaultUdpTransportMapping;
  22. public class SnmpData {
  23. public static final int DEFAULT_VERSION = SnmpConstants.version2c;
  24. public static final String DEFAULT_PROTOCOL = "udp";
  25. public static final int DEFAULT_PORT = 161;
  26. public static final long DEFAULT_TIMEOUT = 3 * 1000L;
  27. public static final int DEFAULT_RETRY = 3;
  28. /**
  29. * 创建对象communityTarget,用于返回target
  30. *
  31. * @param targetAddress
  32. * @param community
  33. * @param version
  34. * @param timeOut
  35. * @param retry
  36. * @return CommunityTarget
  37. */
  38. public static CommunityTarget createDefault(String ip, String community) {
  39. Address address = GenericAddress.parse(DEFAULT_PROTOCOL + ":" + ip
  40. + "/" + DEFAULT_PORT);
  41. CommunityTarget target = new CommunityTarget();
  42. target.setCommunity(new OctetString(community));
  43. target.setAddress(address);
  44. target.setVersion(DEFAULT_VERSION);
  45. target.setTimeout(DEFAULT_TIMEOUT); // milliseconds
  46. target.setRetries(DEFAULT_RETRY);
  47. return target;
  48. }
  49. /*根据OID,获取单条消息*/
  50. public static void snmpGet(String ip, String community, String oid) {
  51. CommunityTarget target = createDefault(ip, community);
  52. Snmp snmp = null;
  53. try {
  54. PDU pdu = new PDU();
  55. // pdu.add(new VariableBinding(new OID(new int[]
  56. // {1,3,6,1,2,1,1,2})));
  57. pdu.add(new VariableBinding(new OID(oid)));
  58. DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping();
  59. snmp = new Snmp(transport);
  60. snmp.listen();
  61. System.out.println("-------> 发送PDU <-------");
  62. pdu.setType(PDU.GET);
  63. ResponseEvent respEvent = snmp.send(pdu, target);
  64. System.out.println("PeerAddress:" + respEvent.getPeerAddress());
  65. PDU response = respEvent.getResponse();
  66. if (response == null) {
  67. System.out.println("response is null, request time out");
  68. } else {
  69. // Vector<VariableBinding> vbVect =
  70. // response.getVariableBindings();
  71. // System.out.println("vb size:" + vbVect.size());
  72. // if (vbVect.size() == 0) {
  73. // System.out.println("response vb size is 0 ");
  74. // } else {
  75. // VariableBinding vb = vbVect.firstElement();
  76. // System.out.println(vb.getOid() + " = " + vb.getVariable());
  77. // }
  78. System.out.println("response pdu size is " + response.size());
  79. for (int i = 0; i < response.size(); i++) {
  80. VariableBinding vb = response.get(i);
  81. System.out.println(vb.getOid() + " = " + vb.getVariable());
  82. }
  83. }
  84. System.out.println("SNMP GET one OID value finished !");
  85. } catch (Exception e) {
  86. e.printStackTrace();
  87. System.out.println("SNMP Get Exception:" + e);
  88. } finally {
  89. if (snmp != null) {
  90. try {
  91. snmp.close();
  92. } catch (IOException ex1) {
  93. snmp = null;
  94. }
  95. }
  96. }
  97. }
  98. /*根据OID列表,一次获取多条OID数据,并且以List形式返回*/
  99. public static void snmpGetList(String ip, String community, List<String> oidList)
  100. {
  101. CommunityTarget target = createDefault(ip, community);
  102. Snmp snmp = null;
  103. try {
  104. PDU pdu = new PDU();
  105. for(String oid:oidList)
  106. {
  107. pdu.add(new VariableBinding(new OID(oid)));
  108. }
  109. DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping();
  110. snmp = new Snmp(transport);
  111. snmp.listen();
  112. System.out.println("-------> 发送PDU <-------");
  113. pdu.setType(PDU.GET);
  114. ResponseEvent respEvent = snmp.send(pdu, target);
  115. System.out.println("PeerAddress:" + respEvent.getPeerAddress());
  116. PDU response = respEvent.getResponse();
  117. if (response == null) {
  118. System.out.println("response is null, request time out");
  119. } else {
  120. System.out.println("response pdu size is " + response.size());
  121. for (int i = 0; i < response.size(); i++) {
  122. VariableBinding vb = response.get(i);
  123. System.out.println(vb.getOid() + " = " + vb.getVariable());
  124. }
  125. }
  126. System.out.println("SNMP GET one OID value finished !");
  127. } catch (Exception e) {
  128. e.printStackTrace();
  129. System.out.println("SNMP Get Exception:" + e);
  130. } finally {
  131. if (snmp != null) {
  132. try {
  133. snmp.close();
  134. } catch (IOException ex1) {
  135. snmp = null;
  136. }
  137. }
  138. }
  139. }
  140. /*根据OID列表,采用异步方式一次获取多条OID数据,并且以List形式返回*/
  141. public static void snmpAsynGetList(String ip, String community,List<String> oidList)
  142. {
  143. CommunityTarget target = createDefault(ip, community);
  144. Snmp snmp = null;
  145. try {
  146. PDU pdu = new PDU();
  147. for(String oid:oidList)
  148. {
  149. pdu.add(new VariableBinding(new OID(oid)));
  150. }
  151. DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping();
  152. snmp = new Snmp(transport);
  153. snmp.listen();
  154. System.out.println("-------> 发送PDU <-------");
  155. pdu.setType(PDU.GET);
  156. ResponseEvent respEvent = snmp.send(pdu, target);
  157. System.out.println("PeerAddress:" + respEvent.getPeerAddress());
  158. PDU response = respEvent.getResponse();
  159. /*异步获取*/
  160. final CountDownLatch latch = new CountDownLatch(1);
  161. ResponseListener listener = new ResponseListener() {
  162. public void onResponse(ResponseEvent event) {
  163. ((Snmp) event.getSource()).cancel(event.getRequest(), this);
  164. PDU response = event.getResponse();
  165. PDU request = event.getRequest();
  166. System.out.println("[request]:" + request);
  167. if (response == null) {
  168. System.out.println("[ERROR]: response is null");
  169. } else if (response.getErrorStatus() != 0) {
  170. System.out.println("[ERROR]: response status"
  171. + response.getErrorStatus() + " Text:"
  172. + response.getErrorStatusText());
  173. } else {
  174. System.out.println("Received response Success!");
  175. for (int i = 0; i < response.size(); i++) {
  176. VariableBinding vb = response.get(i);
  177. System.out.println(vb.getOid() + " = "
  178. + vb.getVariable());
  179. }
  180. System.out.println("SNMP Asyn GetList OID finished. ");
  181. latch.countDown();
  182. }
  183. }
  184. };
  185. pdu.setType(PDU.GET);
  186. snmp.send(pdu, target, null, listener);
  187. System.out.println("asyn send pdu wait for response...");
  188. boolean wait = latch.await(30, TimeUnit.SECONDS);
  189. System.out.println("latch.await =:" + wait);
  190. snmp.close();
  191. System.out.println("SNMP GET one OID value finished !");
  192. } catch (Exception e) {
  193. e.printStackTrace();
  194. System.out.println("SNMP Get Exception:" + e);
  195. } finally {
  196. if (snmp != null) {
  197. try {
  198. snmp.close();
  199. } catch (IOException ex1) {
  200. snmp = null;
  201. }
  202. }
  203. }
  204. }
  205. /*根据targetOID,获取树形数据*/
  206. public static void snmpWalk(String ip, String community, String targetOid)
  207. {
  208. CommunityTarget target = createDefault(ip, community);
  209. TransportMapping transport = null;
  210. Snmp snmp = null;
  211. try {
  212. transport = new DefaultUdpTransportMapping();
  213. snmp = new Snmp(transport);
  214. transport.listen();
  215. PDU pdu = new PDU();
  216. OID targetOID = new OID(targetOid);
  217. pdu.add(new VariableBinding(targetOID));
  218. boolean finished = false;
  219. System.out.println("----> demo start <----");
  220. while (!finished) {
  221. VariableBinding vb = null;
  222. ResponseEvent respEvent = snmp.getNext(pdu, target);
  223. PDU response = respEvent.getResponse();
  224. if (null == response) {
  225. System.out.println("responsePDU == null");
  226. finished = true;
  227. break;
  228. } else {
  229. vb = response.get(0);
  230. }
  231. // check finish
  232. finished = checkWalkFinished(targetOID, pdu, vb);
  233. if (!finished) {
  234. System.out.println("==== walk each vlaue :");
  235. System.out.println(vb.getOid() + " = " + vb.getVariable());
  236. // Set up the variable binding for the next entry.
  237. pdu.setRequestID(new Integer32(0));
  238. pdu.set(0, vb);
  239. } else {
  240. System.out.println("SNMP walk OID has finished.");
  241. snmp.close();
  242. }
  243. }
  244. System.out.println("----> demo end <----");
  245. } catch (Exception e) {
  246. e.printStackTrace();
  247. System.out.println("SNMP walk Exception: " + e);
  248. } finally {
  249. if (snmp != null) {
  250. try {
  251. snmp.close();
  252. } catch (IOException ex1) {
  253. snmp = null;
  254. }
  255. }
  256. }
  257. }
  258. private static boolean checkWalkFinished(OID targetOID, PDU pdu,
  259. VariableBinding vb) {
  260. boolean finished = false;
  261. if (pdu.getErrorStatus() != 0) {
  262. System.out.println("[true] responsePDU.getErrorStatus() != 0 ");
  263. System.out.println(pdu.getErrorStatusText());
  264. finished = true;
  265. } else if (vb.getOid() == null) {
  266. System.out.println("[true] vb.getOid() == null");
  267. finished = true;
  268. } else if (vb.getOid().size() < targetOID.size()) {
  269. System.out.println("[true] vb.getOid().size() < targetOID.size()");
  270. finished = true;
  271. } else if (targetOID.leftMostCompare(targetOID.size(), vb.getOid()) != 0) {
  272. System.out.println("[true] targetOID.leftMostCompare() != 0");
  273. finished = true;
  274. } else if (Null.isExceptionSyntax(vb.getVariable().getSyntax())) {
  275. System.out
  276. .println("[true] Null.isExceptionSyntax(vb.getVariable().getSyntax())");
  277. finished = true;
  278. } else if (vb.getOid().compareTo(targetOID) <= 0) {
  279. System.out.println("[true] Variable received is not "
  280. + "lexicographic successor of requested " + "one:");
  281. System.out.println(vb.toString() + " <= " + targetOID);
  282. finished = true;
  283. }
  284. return finished;
  285. }
  286. /*根据targetOID,异步获取树形数据*/
  287. public static void snmpAsynWalk(String ip, String community, String oid)
  288. {
  289. final CommunityTarget target = createDefault(ip, community);
  290. Snmp snmp = null;
  291. try {
  292. System.out.println("----> demo start <----");
  293. DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping();
  294. snmp = new Snmp(transport);
  295. snmp.listen();
  296. final PDU pdu = new PDU();
  297. final OID targetOID = new OID(oid);
  298. final CountDownLatch latch = new CountDownLatch(1);
  299. pdu.add(new VariableBinding(targetOID));
  300. ResponseListener listener = new ResponseListener() {
  301. public void onResponse(ResponseEvent event) {
  302. ((Snmp) event.getSource()).cancel(event.getRequest(), this);
  303. try {
  304. PDU response = event.getResponse();
  305. // PDU request = event.getRequest();
  306. // System.out.println("[request]:" + request);
  307. if (response == null) {
  308. System.out.println("[ERROR]: response is null");
  309. } else if (response.getErrorStatus() != 0) {
  310. System.out.println("[ERROR]: response status"
  311. + response.getErrorStatus() + " Text:"
  312. + response.getErrorStatusText());
  313. } else {
  314. System.out
  315. .println("Received Walk response value :");
  316. VariableBinding vb = response.get(0);
  317. boolean finished = checkWalkFinished(targetOID,
  318. pdu, vb);
  319. if (!finished) {
  320. System.out.println(vb.getOid() + " = "
  321. + vb.getVariable());
  322. pdu.setRequestID(new Integer32(0));
  323. pdu.set(0, vb);
  324. ((Snmp) event.getSource()).getNext(pdu, target,
  325. null, this);
  326. } else {
  327. System.out
  328. .println("SNMP Asyn walk OID value success !");
  329. latch.countDown();
  330. }
  331. }
  332. } catch (Exception e) {
  333. e.printStackTrace();
  334. latch.countDown();
  335. }
  336. }
  337. };
  338. snmp.getNext(pdu, target, null, listener);
  339. System.out.println("pdu 已发送,等到异步处理结果...");
  340. boolean wait = latch.await(30, TimeUnit.SECONDS);
  341. System.out.println("latch.await =:" + wait);
  342. snmp.close();
  343. System.out.println("----> demo end <----");
  344. } catch (Exception e) {
  345. e.printStackTrace();
  346. System.out.println("SNMP Asyn Walk Exception:" + e);
  347. }
  348. }
  349. /*根据OID和指定string来设置设备的数据*/
  350. public static void setPDU(String ip,String community,String oid,String val) throws IOException
  351. {
  352. CommunityTarget target = createDefault(ip, community);
  353. Snmp snmp = null;
  354. PDU pdu = new PDU();
  355. pdu.add(new VariableBinding(new OID(oid),new OctetString(val)));
  356. pdu.setType(PDU.SET);
  357. DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping();
  358. snmp = new Snmp(transport);
  359. snmp.listen();
  360. System.out.println("-------> 发送PDU <-------");
  361. snmp.send(pdu, target);
  362. snmp.close();
  363. }
  364. }

SnmpTest:

[java] view plain copy
  1. package com.test.snmp;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.snmp4j.log.ConsoleLogFactory;
  5. import org.snmp4j.log.LogAdapter;
  6. import org.snmp4j.log.LogFactory;
  7. import com.test.snmp.SnmpData;
  8. public class SnmpTest {
  9. /**
  10. * @param args
  11. */
  12. public static void main(String[] args) {
  13. // TODO Auto-generated method stub
  14. SnmpTest test = new SnmpTest();
  15. test.testGet();
  16. }
  17. public void testGet()
  18. {
  19. String ip = "127.0.0.1";
  20. String community = "public";
  21. String oidval = "1.3.6.1.2.1.1.6.0";
  22. SnmpData.snmpGet(ip, community, oidval);
  23. }
  24. public void testGetList(){
  25. String ip = "127.0.0.1";
  26. String community = "public";
  27. List<String> oidList=new ArrayList<String>();
  28. oidList.add("1.3.6.1.2.1.1.5.0");
  29. oidList.add("1.3.6.1.2.1.1.7.0");
  30. SnmpData.snmpGetList(ip, community, oidList);
  31. }
  32. public void testGetAsyList()
  33. {
  34. String ip = "127.0.0.1";
  35. String community = "public";
  36. List<String> oidList=new ArrayList<String>();
  37. oidList.add("1.3.6.1.2.1");
  38. oidList.add("1.3.6.1.2.12");
  39. SnmpData.snmpAsynGetList(ip, community, oidList);
  40. System.out.println("i am first!");
  41. }
  42. public void testWalk()
  43. {
  44. String ip = "127.0.0.1";
  45. String community = "public";
  46. String targetOid = "1.3.6.1.2.1.1.5.0";
  47. SnmpData.snmpWalk(ip, community, targetOid);
  48. }
  49. public void testAsyWalk()
  50. {
  51. String ip = "127.0.0.1";
  52. String community = "public";
  53. // 异步采集数据
  54. SnmpData.snmpAsynWalk(ip, community, "1.3.6.1.2.1.25.4.2.1.2");
  55. }
  56. public void testSetPDU() throws Exception
  57. {
  58. String ip = "127.0.0.1";
  59. String community = "public";
  60. SnmpData.setPDU(ip, community, "1.3.6.1.2.1.1.6.0","jianghuiwen");
  61. }
  62. public void testVersion()
  63. {
  64. System.out.println(org.snmp4j.version.VersionInfo.getVersion());
  65. }
  66. }

文档和源码csdn下载:http://download.csdn.net/detail/davebobo/9509435

ref: http://www.tuicool.com/articles/FF7fEbi

ref: http://blog.chinaunix.net/uid-21857285-id-3340206.html

-------------------------更新--------------------------------------

Trap功能的实现:

下面是两个用于发送和接收Trap报文信息的类:

接收Trap消息类:

[java] view plain copy
  1. import java.io.IOException;
  2. import java.net.UnknownHostException;
  3. import java.util.Vector;
  4. import org.snmp4j.CommandResponder;
  5. import org.snmp4j.CommandResponderEvent;
  6. import org.snmp4j.MessageDispatcherImpl;
  7. import org.snmp4j.Snmp;
  8. import org.snmp4j.TransportMapping;
  9. import org.snmp4j.mp.MPv1;
  10. import org.snmp4j.mp.MPv2c;
  11. import org.snmp4j.mp.MPv3;
  12. import org.snmp4j.security.SecurityModels;
  13. import org.snmp4j.security.SecurityProtocols;
  14. import org.snmp4j.security.USM;
  15. import org.snmp4j.smi.Address;
  16. import org.snmp4j.smi.GenericAddress;
  17. import org.snmp4j.smi.OctetString;
  18. import org.snmp4j.smi.TcpAddress;
  19. import org.snmp4j.smi.UdpAddress;
  20. import org.snmp4j.smi.VariableBinding;
  21. import org.snmp4j.transport.DefaultTcpTransportMapping;
  22. import org.snmp4j.transport.DefaultUdpTransportMapping;
  23. import org.snmp4j.util.MultiThreadedMessageDispatcher;
  24. import org.snmp4j.util.ThreadPool;
  25. /**
  26. * 本类用于监听代理进程的Trap信息
  27. *
  28. * @author zhanjia
  29. *
  30. */
  31. public class MultiThreadedTrapReceiver implements CommandResponder {
  32. private MultiThreadedMessageDispatcher dispatcher;
  33. private Snmp snmp = null;
  34. private Address listenAddress;
  35. private ThreadPool threadPool;
  36. public MultiThreadedTrapReceiver() {
  37. // BasicConfigurator.configure();
  38. }
  39. private void init() throws UnknownHostException, IOException {
  40. threadPool = ThreadPool.create("Trap", 2);
  41. dispatcher = new MultiThreadedMessageDispatcher(threadPool,
  42. new MessageDispatcherImpl());
  43. listenAddress = GenericAddress.parse(System.getProperty(
  44. "snmp4j.listenAddress", "udp:192.168.1.23/162")); // 本地IP与监听端口
  45. TransportMapping transport;
  46. // 对TCP与UDP协议进行处理
  47. if (listenAddress instanceof UdpAddress) {
  48. transport = new DefaultUdpTransportMapping(
  49. (UdpAddress) listenAddress);
  50. } else {
  51. transport = new DefaultTcpTransportMapping(
  52. (TcpAddress) listenAddress);
  53. }
  54. snmp = new Snmp(dispatcher, transport);
  55. snmp.getMessageDispatcher().addMessageProcessingModel(new MPv1());
  56. snmp.getMessageDispatcher().addMessageProcessingModel(new MPv2c());
  57. snmp.getMessageDispatcher().addMessageProcessingModel(new MPv3());
  58. USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3
  59. .createLocalEngineID()), 0);
  60. SecurityModels.getInstance().addSecurityModel(usm);
  61. snmp.listen();
  62. }
  63. public void run() {
  64. try {
  65. init();
  66. snmp.addCommandResponder(this);
  67. System.out.println("开始监听Trap信息!");
  68. } catch (Exception ex) {
  69. ex.printStackTrace();
  70. }
  71. }
  72. /**
  73. * 实现CommandResponder的processPdu方法, 用于处理传入的请求、PDU等信息
  74. * 当接收到trap时,会自动进入这个方法
  75. *
  76. * @param respEvnt
  77. */
  78. public void processPdu(CommandResponderEvent respEvnt) {
  79. // 解析Response
  80. if (respEvnt != null && respEvnt.getPDU() != null) {
  81. Vector<VariableBinding> recVBs = respEvnt.getPDU().getVariableBindings();
  82. for (int i = 0; i < recVBs.size(); i++) {
  83. VariableBinding recVB = recVBs.elementAt(i);
  84. System.out.println(recVB.getOid() + " : " + recVB.getVariable());
  85. }
  86. }
  87. }
  88. public static void main(String[] args) {
  89. MultiThreadedTrapReceiver multithreadedtrapreceiver = new MultiThreadedTrapReceiver();
  90. multithreadedtrapreceiver.run();
  91. }
  92. }

);

  • // 超时时间
  • target.setTimeout(1500);
  • // snmp版本
  • target.setVersion(SnmpConstants.version2c);
  • // 创建 PDU
  • PDU pdu = new PDU();
  • pdu.add(new VariableBinding(new OID(".1.3.6.1.2.3377.10.1.1.1.1"),
  • new OctetString("SnmpTrap")));
  • pdu.add(new VariableBinding(new OID(".1.3.6.1.2.3377.10.1.1.1.2"),
  • new OctetString("JavaEE")));
  • pdu.setType(PDU.TRAP);
  • // 向Agent发送PDU,并接收Response
  • ResponseEvent respEvnt = snmp.send(pdu, target);
  • // 解析Response
  • if (respEvnt != null && respEvnt.getResponse() != null) {
  • Vector<VariableBinding> recVBs = respEvnt.getResponse()
  • .getVariableBindings();
  • for (int i = 0; i < recVBs.size(); i++) {
  • VariableBinding recVB = recVBs.elementAt(i);
  • System.out.println(recVB.getOid() + " : " + recVB.getVariable());
  • }
  • }
  • }
  • public static void main(String[] args) {
  • try {
  • SnmpUtilSendTrap util = new SnmpUtilSendTrap();
  • util.initComm();
  • util.sendPDU();
  • } catch (IOException e) {
  • e.printStackTrace();
  • }
  • }
  • }
  • 上一篇:flutter中使用svg


    下一篇:oracle 倒库后insert id冲突的问题