﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-FaceYe 海鹏博客</title><link>http://www.blogjava.net/ecsun/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 05 Apr 2026 23:05:44 GMT</lastBuildDate><pubDate>Sun, 05 Apr 2026 23:05:44 GMT</pubDate><ttl>60</ttl><item><title>跨越LVS,监控后端应用服务器--监控系统开发路上</title><link>http://www.blogjava.net/ecsun/archive/2008/12/11/245627.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Thu, 11 Dec 2008 02:22:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/12/11/245627.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/245627.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/12/11/245627.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/245627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/245627.html</trackback:ping><description><![CDATA[<p>公司有几百台服务器,很多服务器使用了LVS,同一个应用会部署在很多不同的服务器上,然后在上层加LVS,这个时候,当后台一台或几台服务服务器宕掉了,前端应用是正常的,通过对URL的监控,不能发现问题.</p>
<p>&nbsp;</p>
<p>&nbsp; 上周末托管在深圳电信的机器,有一个机柜9台服务器同时断掉,经过查找,最后是外网交换机出现了问题.但这个时候前端应用是正常的,而监控,没有发出报警信息,昨天在监控上面加上新功能,穿过LVS,直接到后端服务器进行监控.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 这个服务器的监控,分为两种.</p>
<p>&nbsp; 1:通过SNMP对服务器进行监控.</p>
<p>&nbsp; 2:通过对应用的URL对服务器进行监控.</p>
<p>&nbsp;</p>
<p>&nbsp; SNMP主要监控服务器的运行状态.</p>
<p>&nbsp;&nbsp;URL监控,主要监控应用的实时运行状态.</p>
<p>&nbsp;</p>
<p>&nbsp; 费话少说,对应用加IP的探测代码如下:<br />
<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_69_2084_Open_Image" onclick="this.style.display='none'; Codehighlighter1_69_2084_Open_Text.style.display='none'; Codehighlighter1_69_2084_Closed_Image.style.display='inline'; Codehighlighter1_69_2084_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_69_2084_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_69_2084_Closed_Text.style.display='none'; Codehighlighter1_69_2084_Open_Image.style.display='inline'; Codehighlighter1_69_2084_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Long&nbsp;getResponseTimeByIp(String&nbsp;urlAddress,&nbsp;String&nbsp;ip)&nbsp;</span><span id="Codehighlighter1_69_2084_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_69_2084_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;url;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;sb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuffer(</span><span style="color: #000000">""</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpURLConnection&nbsp;conn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;responseTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Long(</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_243_1570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_243_1570_Open_Text.style.display='none'; Codehighlighter1_243_1570_Closed_Image.style.display='inline'; Codehighlighter1_243_1570_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_243_1570_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_243_1570_Closed_Text.style.display='none'; Codehighlighter1_243_1570_Open_Image.style.display='inline'; Codehighlighter1_243_1570_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_243_1570_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_243_1570_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;openTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;System.currentTimeMillis();&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;url&nbsp;=&nbsp;new&nbsp;URL("</span><span style="color: #008000; text-decoration: underline">http://m.easou.com/</span><span style="color: #008000">");&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;URL(urlAddress);&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Proxy&nbsp;proxy&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Proxy(Proxy.Type.HTTP,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InetSocketAddress(buildInetAddress(ip),&nbsp;</span><span style="color: #000000">80</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpURLConnection)&nbsp;url.openConnection(proxy);&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setConnectTimeout(</span><span style="color: #000000">50000</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setReadTimeout(</span><span style="color: #000000">50000</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setRequestMethod(</span><span style="color: #000000">"</span><span style="color: #000000">GET</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setDoOutput(</span><span style="color: #0000ff">true</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setDoInput(</span><span style="color: #0000ff">true</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;bReader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedReader(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InputStreamReader(conn.getInputStream()));&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;temp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;remaining&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_996_1229_Open_Image" onclick="this.style.display='none'; Codehighlighter1_996_1229_Open_Text.style.display='none'; Codehighlighter1_996_1229_Closed_Image.style.display='inline'; Codehighlighter1_996_1229_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_996_1229_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_996_1229_Closed_Text.style.display='none'; Codehighlighter1_996_1229_Open_Image.style.display='inline'; Codehighlighter1_996_1229_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(remaining)&nbsp;</span><span id="Codehighlighter1_996_1229_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_996_1229_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;bReader.readLine();&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1081_1142_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1081_1142_Open_Text.style.display='none'; Codehighlighter1_1081_1142_Closed_Image.style.display='inline'; Codehighlighter1_1081_1142_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1081_1142_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1081_1142_Closed_Text.style.display='none'; Codehighlighter1_1081_1142_Open_Image.style.display='inline'; Codehighlighter1_1081_1142_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;temp)&nbsp;</span><span id="Codehighlighter1_1081_1142_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1081_1142_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(temp);&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1149_1212_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1149_1212_Open_Text.style.display='none'; Codehighlighter1_1149_1212_Closed_Image.style.display='inline'; Codehighlighter1_1149_1212_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1149_1212_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1149_1212_Closed_Text.style.display='none'; Codehighlighter1_1149_1212_Open_Image.style.display='inline'; Codehighlighter1_1149_1212_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1149_1212_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1149_1212_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remaining&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;code&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;conn.getResponseCode();&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1313_1452_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1313_1452_Open_Text.style.display='none'; Codehighlighter1_1313_1452_Closed_Image.style.display='inline'; Codehighlighter1_1313_1452_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1313_1452_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1313_1452_Closed_Text.style.display='none'; Codehighlighter1_1313_1452_Open_Image.style.display='inline'; Codehighlighter1_1313_1452_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(code&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">200</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_1313_1452_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1313_1452_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;returnTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;System.currentTimeMillis();&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;responseTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;returnTime&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;openTime;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1459_1557_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1459_1557_Open_Text.style.display='none'; Codehighlighter1_1459_1557_Closed_Image.style.display='inline'; Codehighlighter1_1459_1557_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1459_1557_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1459_1557_Closed_Text.style.display='none'; Codehighlighter1_1459_1557_Open_Image.style.display='inline'; Codehighlighter1_1459_1557_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1459_1557_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1459_1557_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;responseTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Long(</span><span style="color: #000000">"</span><span style="color: #000000">50000</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Long(code).toString());&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1604_1755_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1604_1755_Open_Text.style.display='none'; Codehighlighter1_1604_1755_Closed_Image.style.display='inline'; Codehighlighter1_1604_1755_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1604_1755_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1604_1755_Closed_Text.style.display='none'; Codehighlighter1_1604_1755_Open_Image.style.display='inline'; Codehighlighter1_1604_1755_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(MalformedURLException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_1604_1755_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1604_1755_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;responseTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Long(</span><span style="color: #000000">"</span><span style="color: #000000">60000000</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1779_1930_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1779_1930_Open_Text.style.display='none'; Codehighlighter1_1779_1930_Closed_Image.style.display='inline'; Codehighlighter1_1779_1930_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1779_1930_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1779_1930_Closed_Text.style.display='none'; Codehighlighter1_1779_1930_Open_Image.style.display='inline'; Codehighlighter1_1779_1930_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_1779_1930_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1779_1930_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;responseTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Long(</span><span style="color: #000000">"</span><span style="color: #000000">60000000</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1940_2043_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1940_2043_Open_Text.style.display='none'; Codehighlighter1_1940_2043_Closed_Image.style.display='inline'; Codehighlighter1_1940_2043_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1940_2043_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1940_2043_Closed_Text.style.display='none'; Codehighlighter1_1940_2043_Open_Image.style.display='inline'; Codehighlighter1_1940_2043_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">finally</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1940_2043_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1940_2043_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1975_2030_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1975_2030_Open_Text.style.display='none'; Codehighlighter1_1975_2030_Closed_Image.style.display='inline'; Codehighlighter1_1975_2030_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1975_2030_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1975_2030_Closed_Text.style.display='none'; Codehighlighter1_1975_2030_Open_Image.style.display='inline'; Codehighlighter1_1975_2030_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;conn)&nbsp;</span><span id="Codehighlighter1_1975_2030_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1975_2030_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.disconnect();&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;responseTime;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<p>使用这段代码,就可以对于做了负载均衡的服务器,进行URL的实时监控了.</p>
<p>&nbsp;</p>
<p>发送的报警信息,会探测出目前哪台服务器的状况更差,更有针对性,方便系统组用户处理服务器异常.</p>
<br />
<img src ="http://www.blogjava.net/ecsun/aggbug/245627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-12-11 10:22 <a href="http://www.blogjava.net/ecsun/archive/2008/12/11/245627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从Ext到jQuery,爱.恨交加 </title><link>http://www.blogjava.net/ecsun/archive/2008/12/02/244018.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 02 Dec 2008 13:22:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/12/02/244018.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/244018.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/12/02/244018.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/244018.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/244018.html</trackback:ping><description><![CDATA[似乎是拿出了一个老的话题来说,在做开的的时候,我们是应该选择Ext,这是应该选择jQuery?
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 确实是一个老话题了,很多同行已经讨论这个问题很多了.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 一直关注我的朋友会记得,在Ext 正火的时候,我推出了一个以Ext portal为基础,整合struts,spirng,hibernate的开源项目,很多朋友下载,配置,运行了这个项目,并通过各种方式就ext的使用进行了沟通.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 怎么说呢?写完第一个不算完整的FaceYe ext版本后,我自己心里多多少少有些无奈.虽然说FaceYe做成了可配置的类似portal结构,但是使用ext做出的portlet离真正的portlet还是有很大距离的.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 而最大问题,我觉得不在这里,就我们知道,Ext本身已经很臃肿了,使用Ext写东西,很少会直接去写Html,作为我来说,大多工作是通过直接与js脚本来做了,似乎正应了很多朋友热忠的one application one pae,确实,FaceYe可以说在用户界面上做到了这一点,同时页面的布局可以随意改变,页面上的模块可以随意添加,比如从最初的RSS模块,到后来的围绕RSS的订阅等服务, 以为博客等,都可以随意的去组装..这个过程,我所写的所有html代码,除了header里面加载进来的css/js外,留下的,几乎只有空空的body了.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 一个朋友看了以后,说:靠,页面上的东西怎么出来的?</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 可能很多朋友也会这么说,随着我继续向下开发,功能越来越多,要加载的东西也越来越多的时候,我设计了另外一个功能,把所有要加载的 js路径写入数据,当需要加载的时候,再根据路径去加载指定的js,到后来,我自己甚至都分不清哪一个js对应哪一个功能模块了.虽然js有说明,有注视,但有时候我真的要去select数据库了.虽说用大量jsp来完成类似的功能或许也会出现这样的问题,但我觉得,混乱,在大量使用js,使用return null这样的action的时候,使混乱更加混乱了.</p>
<p>&nbsp;&nbsp; 使用Ext带为的另外一个问题,是页面是只留下空空如也的body了,而这不是google这样的搜索引擎喜欢的,而我们使用Ext做的站点,也很难被搜索引擎收录,做seo,也不容易.看到过一个朋友使用Ext做的网站,从使用Ext的角度来看,真的是下了很大功夫,可seo,真的很艰难.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 所以随着开发的不断深入,我发现,不能继续使用Ext进行所有的开发了,至少,不能大量使用Ext进行互联网应用的开发了.</p>
<p>&nbsp;</p>
<p>&nbsp; 总的原因</p>
<p>&nbsp; 1.Ext体积太大(没使用GZIP超过153K)</p>
<p>&nbsp; 2.大量使用Ext不利于网站做SEO.Ext的各种panel,包括Tab,Grid,Win,Form等等,生成起来很简单,大多只需要几句代码就可以了,可以不使用一句html,就可以生成出来一个漂亮的布局.虽然工作量少了,页面看上去漂亮了,可搜索引擎也发现不了网站了.得不尝失.</p>
<p>&nbsp; 3.兼容.Ext虽然在兼容性方面花了很大功夫,但在某些时候,还是会偶尔展现出来一个意想不到的结果,令人渧笑皆非.</p>
<p>&nbsp; 4.调试.虽然我们有很多调试工具可以使用,但有时候,真的不知道是哪里出了问题,新来开发的,更是一愁莫展.</p>
<p>&nbsp;</p>
<p>所以到了后来,我开始寻找另外一种更为简单的式式来开发了.那就是jQuery.jQuery没有像Ext那里,提供一切你想要的,个人觉得 ,jQuery更专注于简化最基础的开发工作.所以使用起来,也就感觉更像是使用原始的js进行开发一样.而页面上的html结构,跟没使用jQuery以前,没有太大差别是.这对于网站开发来说,我觉得是一件好事情.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>从使用Ext进行FaceYe的开发,到后来感觉到迷茫,试用YUI,再到选择jQuery进行实际的工作,一路走来,感觉,真的是爱恨交加.Ext简化了很多工作,让开发更简洁,更方便,但也带来了很多麻烦,给我们留下了更小的选择空间,YUI跟Ext,虽说不像Ext一样,但使用起来,到处是Ext的影子,似乎像一个刚刚分手的恋人一样,使用起来,太多无奈.直到开始使用jQuery,才感觉,又有了当初跨入IT行业的激情.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 总之一句话,如果你做WEB,别用Ext,如果你做大的项目,或是压力较大的项目,最好别全部使用Ext.如果你的项目人员不稳定,只是极少数人懂Ext,别用Ext.</p>
<img src ="http://www.blogjava.net/ecsun/aggbug/244018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-12-02 21:22 <a href="http://www.blogjava.net/ecsun/archive/2008/12/02/244018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>伊利，蒙牛，三鹿对话，放上来娱乐大伙</title><link>http://www.blogjava.net/ecsun/articles/230277.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Sun, 21 Sep 2008 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/articles/230277.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/230277.html</wfw:comment><comments>http://www.blogjava.net/ecsun/articles/230277.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/230277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/230277.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中国人在食品中完成了化学扫盲&nbsp; <br />
　　从大米里我们认识了石蜡&nbsp; <br />
　　从火腿里我们认识了敌敌畏&nbsp; <br />
　　从咸鸭蛋、辣椒酱里我们认识了苏丹红&nbsp; <br />
　　从火锅里我们认识了福尔马林&nbsp; <br />
　　从银耳、蜜枣里我们认识了硫磺&nbsp; <br />
　　从木耳中认识了硫酸铜&nbsp; <br />
　　今天三鹿又让同胞知道了三聚氰胺的化学作用&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; 外国人喝牛奶结实了&nbsp; <br />
&nbsp;&nbsp;&nbsp; 中国人喝牛奶结石了&nbsp; <br />
&nbsp;&nbsp;&nbsp; 日本人口号：一天一杯牛奶振兴一个民族&nbsp; <br />
&nbsp;&nbsp;&nbsp; 中国人口号：一天一杯牛奶，震惊一个民族&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 伊利，蒙牛最想对三鹿说什么&nbsp; <br />
&nbsp;&nbsp;&nbsp; 伊利：你他妈加就加了，不能少加点？&nbsp; <br />
&nbsp;&nbsp;&nbsp; 蒙牛：我从来都是奶粉里加三聚氰胺，你他妈三聚氰胺里加奶粉？&nbsp; <br />
&nbsp;&nbsp;&nbsp; 三鹿（委屈）：那几天漏斗坏了，没他妈控制住量！<br />
<br />
<br />
&nbsp;&nbsp; 这食品安全，看来真的是一大问题，大伙平时多注意了~祝大伙身体健康。</p>
<img src ="http://www.blogjava.net/ecsun/aggbug/230277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-21 17:25 <a href="http://www.blogjava.net/ecsun/articles/230277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>立足blogjava现在资源，将blogjava的服务向纵深拓展的思考</title><link>http://www.blogjava.net/ecsun/archive/2008/09/19/230037.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Fri, 19 Sep 2008 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/19/230037.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/230037.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/19/230037.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/230037.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/230037.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <br/>1.blogjava资源的分类问题<br>2.立足blogjava现有资源，将blogjava的服务向深度和广度扩展。<br>3.blogjava需要一些可以聚焦人气的活动或氛围<br><a href="http://www.faceye.com" target="_blank">FaceYe淘客</a>|<a href="http://papa.javaeye.com" target="_blank">海鹏JavaEye博客</a>|<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/ecsun/archive/2008/09/19/230037.html'>阅读全文</a><img src ="http://www.blogjava.net/ecsun/aggbug/230037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-19 23:25 <a href="http://www.blogjava.net/ecsun/archive/2008/09/19/230037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浪潮之巅:幕后的英雄—风险投资（Venture Capital）-风投的起源</title><link>http://www.blogjava.net/ecsun/articles/229360.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Wed, 17 Sep 2008 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/articles/229360.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229360.html</wfw:comment><comments>http://www.blogjava.net/ecsun/articles/229360.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229360.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229360.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/ecsun/articles/229360.html'>阅读全文</a><img src ="http://www.blogjava.net/ecsun/aggbug/229360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-17 10:42 <a href="http://www.blogjava.net/ecsun/articles/229360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浪潮之巅-幕后的英雄—风险投资（Venture Capital）</title><link>http://www.blogjava.net/ecsun/articles/229357.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Wed, 17 Sep 2008 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/articles/229357.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229357.html</wfw:comment><comments>http://www.blogjava.net/ecsun/articles/229357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229357.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229357.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/ecsun/articles/229357.html'>阅读全文</a><img src ="http://www.blogjava.net/ecsun/aggbug/229357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-17 10:40 <a href="http://www.blogjava.net/ecsun/articles/229357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一字之差，偶与神七飞行员没关~~</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229195.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229195.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229195.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229195.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229195.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229195.html</trackback:ping><description><![CDATA[刚看到QQ上面的一新闻提示，神七飞行员已定，三人组，一兄弟叫&#8220;景海鹏&#8221;，晕晕~~，偶哥们儿俩就一字差，搞得偶与这神七飞行员三巨头没啥关系了。<br />
<br />
没事，明个新闻采访还会亲切的叫，海鹏，谈谈你在神七上的感受~~？<br />
<br />
那也是跟偶在说话啦~<br />
<br />
据公开资料，这次会有飞行员出仓进行太空行走的安排，同时，飞行员还要释放小卫星，这下可好了，能放出去，就能收进来，哪天咱一不高兴，发艘飞船上去，把老美的曲棍球啊什么的，全收进来，带回来给咱儿子当皮球玩~<br />
<br />
那叫个爽~<br />
<br />
不扯蛋了，祝神七成功，祝飞行员安全。<br />
<img src ="http://www.blogjava.net/ecsun/aggbug/229195.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 16:12 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229195.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SNMP风险及防范</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229156.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229156.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229156.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229156.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://papa.javaeye.com">ecsun</a>&nbsp;
                    链接：<a href="http://papa.javaeye.com/blog/220526" style="color:red;">http://papa.javaeye.com/blog/220526</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          接入Internet的网络面临许多风险，Web服务器可能面临攻击，邮件服务器的安全也令人担忧。但除 此之外，网络上可能还存在一些隐性的漏洞。大多数网络总有一些设备运行着SNMP服务，许多时候这些SNMP服务是不必要的，但却没有引起网络管理员的重视。 <br /><br />　　根据SANS协会（http://www.sans.org）的报告，对于接入Internet的主机，SNMP是威胁安全的十大首要因素之一；同时，SNMP还是Internet主机上最常见的服务之一。特别地，SNMP服务通常在位于网络边缘的设备（防火墙保护圈之外的设备）上运行，进一步加剧了SNMP带来的风险。这一切听起来出人意料，但其实事情不应该是这样的。本文提供了一些建议，帮助你正确面对SNMP服务隐藏的风险。 <br /><br />　　一、背景知识 <br /><br />　　SNMP开发于九十年代早期，其目的是简化大型网络中设备的管理和数据的获取。许多与网络有关的软件包，如HP的OpenView和Nortel Networks的Optivity Network Management System，还有Multi Router Traffic Grapher（MRTG）之类的免费软件，都用SNMP服务来简化网络的管理和维护。 <br /><br />　　由于SNMP的效果实在太好了，所以网络硬件厂商开始把SNMP加入到它们制造的每一台设备。今天，各种网络设备上都可以看到默认启用的SNMP服务，从交换机到路由器，从防火墙到网络打印机，无一例外。 <br /><br />　　仅仅是分布广泛还不足以造成威胁，问题是许多厂商安装的SNMP都采用了默认的通信字符串（例如密码），这些通信字符串是程序获取设备信息和修改配置必不可少的。采用默认通信字符串的好处是网络上的软件可以直接访问设备，无需经过复杂的配置。 <br /><br />　　通信字符串主要包含两类命令：GET命令，SET命令。GET命令从设备读取数据，这些数据通常是操作参数，例如连接状态、接口名称等。SET命令允许设置设备的某些参数，这类功能一般有限制，例如关闭某个网络接口、修改路由器参数等功能。但很显然，GET、SET命令都可能被用于拒绝服务攻击（DoS）和恶意修改网络参数。 <br /><br />　　最常见的默认通信字符串是public（只读）和private（读/写），除此之外还有许多厂商私有的默认通信字符串。几乎所有运行SNMP的网络设备上，都可以找到某种形式的默认通信字符串。 <br /><br />　　SNMP 2.0和SNMP 1.0的安全机制比较脆弱，通信不加密，所有通信字符串和数据都以明文形式发送。攻击者一旦捕获了网络通信，就可以利用各种嗅探工具直接获取通信字符串，即使用户改变了通信字符串的默认值也无济于事。 <br /><br />　　近几年才出现的SNMP 3.0解决了一部分问题。为保护通信字符串，SNMP 3.0使用DES（Data Encryption Standard）算法加密数据通信；另外，SNMP 3.0还能够用MD5和SHA（Secure Hash Algorithm）技术验证节点的标识符，从而防止攻击者冒充管理节点的身份操作网络。有关SNMP 3.0的详细说明，请参见http://www.ietf.org/rfc/rfc2570.txt。 <br /><br />　　虽然SNMP 3.0出现已经有一段时间了，但目前还没有广泛应用。如果设备是2、3年前的产品，很可能根本不支持SNMP 3.0；甚至有些较新的设备也只有SNMP 2.0或SNMP 1.0。 <br /><br />　　即使设备已经支持SNMP 3.0，许多厂商使用的还是标准的通信字符串，这些字符串对黑客组织来说根本不是秘密。因此，虽然SNMP 3.0比以前的版本提供了更多的安全特性，如果配置不当，其实际效果仍旧有限。 <br /><br />　　二、禁用SNMP <br /><br />　　要避免SNMP服务带来的安全风险，最彻底的办法是禁用SNMP。如果你没有用SNMP来管理网络，那就没有必要运行它；如果你不清楚是否有必要运行SNMP，很可能实际上不需要。即使你打算以后使用SNMP，只要现在没有用，也应该先禁用SNMP，直到确实需要使用SNMP时才启用它。 <br /><br />　　下面列出了如何在常见的平台上禁用SNMP服务。 <br /><br />　　■ Windows XP和Windows 2000 <br /><br />　　在XP和Win 2K中，右击“我的电脑”，选择“管理”。展开“服务和应用程序”、“服务”，从服务的清单中选择SNMP服务，停止该服务。然后打开服务的“属性”对话框，将启动类型该为“禁用”（按照微软的默认设置，Win 2K/XP默认不安装SNMP服务，但许多软件会自动安装该服务）。 <br /><br />　　■ Windows NT 4.0 <br /><br />　　选择“开始”→“设置”，打开服务设置程序，在服务清单中选择SNMP服务，停止该服务，然后将它的启动类型该为禁用。 <br /><br />　　■ Windows 9x <br /><br />　　打开控制面板的网络设置程序，在“配置”页中，从已安装的组件清单中选择“Microsoft SNMP代理”，点击“删除”。检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices和HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\CurrentVersion\Run注册键，确认不存在snmp.exe。 <br /><br />　　■ Cisco Systems硬件 <br /><br />　　对于Cisco的网络硬件，执行“no SNMP-server”命令禁用SNMP服务。如果要检查SNMP是否关闭，可执行“show SNMP”命令。这些命令只适用于运行Cisco IOS的平台；对于非IOS的Cisco设备，请参考随机文档。 <br /><br />　　■ HP硬件 <br /><br />　　对于所有使用JetDirect卡（绝大部分HP网络打印机都使用它）的HP网络设备，用telnet连接到JetDirect卡的IP地址，然后执行下面的命令： <br /><br />SNMP-config: 0<br />quit <br /><br /><br />　　这些命令将关闭设备的SNMP服务。但必须注意的是，禁用SNMP服务会影响服务的发现操作以及利用SNMP获取设备状态的端口监视机制。 <br /><br />　　■ Red Hat Linux <br /><br />　　对于Red Hat Linux，可以用Linuxconf工具从自动启动的服务清单中删除SNMP，或者直接从/etc/services文件删除启动SNMP的行。对于其他Linux系统，操作方法应该也相似。<br /><br />　　三、保障SNMP的安全 <br /><br />　　如果某些设备确实有必要运行SNMP，则必须保障这些设备的安全。首先要做的是确定哪些设备正在运行SNMP服务。除非定期对整个网络进行端口扫描，全面掌握各台机器、设备上运行的服务，否则的话，很有可能遗漏一、二个SNMP服务。特别需要注意的是，网络交换机、打印机之类的设备同样也会运行SNMP服务。确定SNMP服务的运行情况后，再采取下面的措施保障服务安全。 <br /><br />　　■ 加载SNMP服务的补丁 <br /><br />　　安装SNMP服务的补丁，将SNMP服务升级到2.0或更高的版本。联系设备的制造商，了解有关安全漏洞和升级补丁的情况。 <br /><br />　　■ 保护SNMP通信字符串 <br /><br />　　一个很重要的保护措施是修改所有默认的通信字符串。根据设备文档的说明，逐一检查、修改各个标准的、非标准的通信字符串，不要遗漏任何一项，必要时可以联系制造商获取详细的说明。 <br /><br />　　■ 过滤SNMP <br /><br />　　另一个可以采用的保护措施是在网络边界上过滤SNMP通信和请求，即在防火墙或边界路由器上，阻塞SNMP请求使用的端口。标准的SNMP服务使用161和162端口，厂商私有的实现一般使用199、391、705和1993端口。禁用这些端口通信后，外部网络访问内部网络的能力就受到了限制；另外，在内部网络的路由器上，应该编写一个ACL，只允许某个特定的可信任的SNMP管理系统操作SNMP。例如，下面的ACL只允许来自（或者走向）SNMP管理系统的SNMP通信，限制网络上的所有其他SNMP通信： <br /><br />access-list 100 permit ip host w.x.y any<br />access-list 100 deny udp any any eq snmp<br />access-list 100 deny udp any any eq snmptrap <br />access-list 100 permit ip any any <br /><br /><br />　　这个ACL的第一行定义了可信任管理系统（w.x.y）。利用下面的命令可以将上述ACL应用到所有网络接口： <br /><br />interface serial 0<br />ip access-group 100 in <br /><br /><br />　　总之，SNMP的发明代表着网络管理的一大进步，现在它仍是高效管理大型网络的有力工具。然而，SNMP的早期版本天生缺乏安全性，即使最新的版本同样也存在问题。就象网络上运行的其他服务一样，SNMP服务的安全性也是不可忽视的。不要盲目地肯定网络上没有运行SNMP服务，也许它就躲藏在某个设备上。那些必不可少的网络服务已经有太多让人担忧的安全问题，所以最好关闭SNMP之类并非必需的服务——至少尽量设法保障其安全。
          <br/><br/>
          <span style="color:red;">
            <a href="http://papa.javaeye.com/blog/220526#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">辉煌盛会-微软WinHec 2008 邀您共赴卓越</span></a></li></ul>
          <br/><br/><br/>
          <img src ="http://www.blogjava.net/ecsun/aggbug/229156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 14:18 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在不同操作系统中安装SNMP</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229155.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229155.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229155.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229155.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229155.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229155.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://papa.javaeye.com">ecsun</a>&nbsp;
                    链接：<a href="http://papa.javaeye.com/blog/220527" style="color:red;">http://papa.javaeye.com/blog/220527</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Windows系统中安装SNMP代理<br />在Windows XP/2000/2003上安装SNMP代理<br />在Windows NT上安装SNMP代理<br />在Linux上安装SNMP代理<br />在Solaris上安装SNMP代理<br /><br />----------------------------------------------------------------------------------------------------------------------------------------------<br />在计算机上安装简单网络管理协议(SNMP)服务之前，您最好了解以下信息：<br /><br />网络中的共同体名称。<br /><br />每个共同体的陷阱目标。<br /><br />SNMP管理主机的IP地址和计算机名称。<br /><br />----------------------------------------------------------------------------------------------------------------------------------------------<br />在Windows XP/2000/2003上安装SNMP代理<br /><br />在Windows XP, 2000和2003上安装SNMP，按照下面的步骤：<br /><br />您必须作为一名管理员或管理员小组中的成员登录，来完成这些步骤。如果您的计算机连接到一个网络上，网络条规设置可能会阻止您完成这些步骤。 <br /><br />点击开始，指向设置，点击控制面板, 双击添加或删除程序, 然后点击添加/删除Windows组件。 <br /><br />点击管理和监视工具(但不要选择或清除其复选框), 然后点击详细信息。 <br /><br />选择简单网络管理协议复选框，并点击确定。 <br /><br />点击下一步。 <br /><br />请插入相应的CD 或指定文件存储位置的完整路径，然后点击继续。<br /><br />SNMP会在安装后自动启动。 <br /><br />这样将完成安装过程。如何配置SNMP代理使之应答SNMP请求，可参见配置SNMP代理。 <br /><br />----------------------------------------------------------------------------------------------------------------------------------------------<br />在Windows NT安装SNMP代理<br /><br />在Windows NT上安装SNMP，按照下面的步骤：<br /><br />右键点击桌面上的网上邻居图标。<br /><br />点击属性。<br /><br />点击服务。<br /><br />点击添加，将出现选择网络服务对话框。<br /><br />在网络服务列表中点击SNMP服务，然后点击确定。<br /><br />插入相应的CD 或指定文件存储位置的完整路径，然后点击继续。<br /><br />在您的计算机上复制必要的文件后，将出现Microsoft SNMP属性对话框。<br /><br />这样将完成安装过程。如何配置SNMP代理使之应答SNMP请求，可参配置SNMP代理。 <br /><br />----------------------------------------------------------------------------------------------------------------------------------------------<br />在Linux上面系统安装SNMP代理<br /><br />仅有8.0以前的Linux版本才需要安装SNMP的新版本。 <br /><br />使用以下URL可以下载最新的SNMP rpm版本：<br /><br /><a href="http://prdownloads.sourceforge.net/net-snmp/net-snmp-5.1.1-1.rh9.i686.rpm?download" target="_blank">http://prdownloads.sourceforge.net/net-snmp/net-snmp-5.1.1-1.rh9.i686.rpm?download</a><br /><br />使用以下URL可以下载最新的SNMP zip版本:<br /><br /><a href="http://heanet.dl.sourceforge.net/sourceforge/net-snmp/ucd-snmp-4.2.6.tar.gz" target="_blank">http://heanet.dl.sourceforge.net/sourceforge/net-snmp/ucd-snmp-4.2.6.tar.gz</a><br /><br />安装rpm版本的步骤如下：<br /><br />用"root"登录。<br /><br />安装最新版的net-snmp之前，需要卸载机器上的旧的net-snmp。要列出机器上已经安装的 net-snmp的版本，可使用以下命令:<br /><br />rpm -qa | grep "net-snmp"<br /><br />如果机器上已经安装了旧版本，可使用以下命令卸载: <br /><br />rpm -e &lt;使用上述命令列出的net-snmp的版本号> --nodeps<br /><br />如果机器上没有安装先前的版本，则使用以下命令安装新版本：<br /><br />rpm -i &lt;新下载的SNMP代理> --nodeps<br /><br />安装zip版本的步骤如下:<br /><br />使用以下命令解冻文件：<br /><br />tar -zxvf ucd-snmp-4.2.6.tar.gz<br /><br />安装SNMP的步骤如下：<br /><br />用root用户登录。<br /><br />执行以下命令来设置C编译器的路径：<br />export PATH=&lt;gcc path>:$PATH<br /><br />从提取ucd-snmp的目录中执行以下四项命令：<br /><br />./configure --prefix=&lt;directory_name> --with-mib-modules="host" <br /><br />directory_name 就是安装SNMP代理的目录。 最好选择一个/root下的目录。目录/usr和/local可能包含SNMP旧版本的文件，所以不要选择这些目录以确保正确安装。<br /><br />make<br /><br />umask 022 <br /><br />make install<br /><br />这样将完成安装过程。如何配置SNMP代理使之应答SNMP请求，可参见配置SNMP代理。 <br /><br />----------------------------------------------------------------------------------------------------------------------------------------------<br />在Solaris系统中安装SNMP代理<br /><br />请使用以下URL来下载SNMP的最新版本：<br /><br /><a href="http://heanet.dl.sourceforge.net/sourceforge/net-snmp/ucd-snmp-4.2.6.tar.gz" target="_blank">http://heanet.dl.sourceforge.net/sourceforge/net-snmp/ucd-snmp-4.2.6.tar.gz</a><br /><br />使用以下命令解压文件：<br /><br />tar -zxvf ucd-snmp-4.2.6.tar.gz<br /><br />安装SNMP的操作步骤如下：<br /><br />用root用户登录。<br /><br />执行以下命令来设置C编译器的路径：<br />export PATH=&lt;gcc path>:$PATH<br /><br />从提取ucd-snmp的目录中执行以下四项命令：<br /><br />./configure --prefix=&lt;directory_name> --with-mib-modules="host" <br /><br />directory_name 就是安装 SNMP 代理的目录。 最好选择安装在根目录/root下。目录/usr和/local 可能包含SNMP旧版本的文件，所以不要选择这些目录以确保正确安装。<br /><br />make<br /><br />umask 022 <br /><br />make install<br /><br />注意： 要安装Solaris 8，参照下面的步骤：<br /><br />netsnmp-5.1.1包在下面的url有效 <a href="ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/netsnmp-5.1.1-sol8-sparc-local.gz." target="_blank">ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/netsnmp-5.1.1-sol8-sparc-local.gz.</a> 这个包是专门用于solaris8。 <br /><br />gunzip etsnmp-5.1.1-sol8-sparc-local.gz. <br /><br />pkgadd -d netsnmp-5.1.1-sol8-sparc-local.<br /><br />包就被安装成功。这个包可以通过" ./configure --with-mib-modules=host "配置，代理将支持host -resource-mib。 <br /><br />启动netsnmp代理：执行 - # /usr/local/sbin/snmpd. <br /><br />停止这个进程：执行 - # pkill -9 -x -u 0 snmpd. <br /><br />这样就完成了安装过程。配置SNMP代理使其相应SNMP，请参考配置SNMP代理。
          <br/><br/>
          <span style="color:red;">
            <a href="http://papa.javaeye.com/blog/220527#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">辉煌盛会-微软WinHec 2008 邀您共赴卓越</span></a></li></ul>
          <br/><br/><br/>
          <img src ="http://www.blogjava.net/ecsun/aggbug/229155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 14:18 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java取得Linuxcpu,内存,磁盘实时信息</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229154.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229154.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229154.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229154.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229154.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://papa.javaeye.com">ecsun</a>&nbsp;
                    链接：<a href="http://papa.javaeye.com/blog/220532" style="color:red;">http://papa.javaeye.com/blog/220532</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java代码 <br />import java.io.BufferedReader;&nbsp;&nbsp; <br />import java.io.File;&nbsp;&nbsp; <br />import java.io.FileInputStream;&nbsp;&nbsp; <br />import java.io.IOException;&nbsp;&nbsp; <br />import java.io.InputStreamReader;&nbsp;&nbsp; <br />import java.util.StringTokenizer;&nbsp;&nbsp; <br />&nbsp; <br />/**&nbsp; <br /> <br /> <br />* 取得linux系统下的cpu、内存信息&nbsp; <br />*&nbsp;&nbsp; <br />* */&nbsp; <br />public final class LinuxSystemTool&nbsp;&nbsp; <br />{&nbsp;&nbsp; <br />&nbsp;&nbsp; /**&nbsp; <br />&nbsp;&nbsp; * get memory by used info&nbsp; <br />&nbsp;&nbsp; *&nbsp;&nbsp; <br />&nbsp;&nbsp; * @return int[] result&nbsp; <br />&nbsp;&nbsp; * result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree;&nbsp; <br />&nbsp;&nbsp; * @throws IOException&nbsp; <br />&nbsp;&nbsp; * @throws InterruptedException&nbsp; <br />&nbsp;&nbsp; */&nbsp; <br />&nbsp;&nbsp; public static int[] getMemInfo() throws IOException, InterruptedException&nbsp;&nbsp; <br />&nbsp;&nbsp; {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file = new File("/proc/meminfo");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader br = new BufferedReader(new InputStreamReader(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new FileInputStream(file)));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] result = new int[4];&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringTokenizer token = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((str = br.readLine()) != null)&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token = new StringTokenizer(str);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!token.hasMoreTokens())&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = token.nextToken();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!token.hasMoreTokens())&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(str.equalsIgnoreCase("MemTotal:"))&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[0] = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(str.equalsIgnoreCase("MemFree:"))&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[1] = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(str.equalsIgnoreCase("SwapTotal:"))&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[2] = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(str.equalsIgnoreCase("SwapFree:"))&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[3] = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;&nbsp;&nbsp; <br />&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp; /**&nbsp; <br />&nbsp;&nbsp; * get memory by used info&nbsp; <br />&nbsp;&nbsp; *&nbsp;&nbsp; <br />&nbsp;&nbsp; * @return float efficiency&nbsp; <br />&nbsp;&nbsp; * @throws IOException&nbsp; <br />&nbsp;&nbsp; * @throws InterruptedException&nbsp; <br />&nbsp;&nbsp; */&nbsp; <br />&nbsp;&nbsp; public static float getCpuInfo() throws IOException, InterruptedException&nbsp;&nbsp; <br />&nbsp;&nbsp; {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file = new File("/proc/stat");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader br = new BufferedReader(new InputStreamReader(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new FileInputStream(file)));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringTokenizer token = new StringTokenizer(br.readLine());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token.nextToken();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int user1 = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int nice1 = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sys1 = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int idle1 = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(1000);&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; br = new BufferedReader(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new InputStreamReader(new FileInputStream(file)));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token = new StringTokenizer(br.readLine());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token.nextToken();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int user2 = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int nice2 = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sys2 = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int idle2 = Integer.parseInt(token.nextToken());&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));&nbsp;&nbsp; <br />&nbsp;&nbsp; }&nbsp;&nbsp; <br />}&nbsp;&nbsp; <br />&nbsp; <br />/**&nbsp; <br />* 测试类&nbsp; <br />*&nbsp;&nbsp; <br />* &lt;p>@author javer QQ:84831612&lt;/p>&nbsp; <br />* @date 2005&nbsp; <br />*/&nbsp; <br />public class JaverTest&nbsp;&nbsp; <br />{&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] memInfo = LinuxSystemTool.getMemInfo();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("MemTotal：" + memInfo[0]);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("MemFree：" + memInfo[1]);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SwapTotal：" + memInfo[2]);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SwapFree：" + memInfo[3]);&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("CPU利用率：" + LinuxSystemTool.getCpuInfo());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />}&nbsp; <br /><br />import java.io.BufferedReader;<br />import java.io.File;<br />import java.io.FileInputStream;<br />import java.io.IOException;<br />import java.io.InputStreamReader;<br />import java.util.StringTokenizer;<br /><br />/**<br /><br /><br />* 取得linux系统下的cpu、内存信息<br />* <br />* */<br />public final class LinuxSystemTool<br />{<br />&nbsp;&nbsp; /**<br />&nbsp;&nbsp; * get memory by used info<br />&nbsp;&nbsp; * <br />&nbsp;&nbsp; * @return int[] result<br />&nbsp;&nbsp; * result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree;<br />&nbsp;&nbsp; * @throws IOException<br />&nbsp;&nbsp; * @throws InterruptedException<br />&nbsp;&nbsp; */<br />&nbsp;&nbsp; public static int[] getMemInfo() throws IOException, InterruptedException<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file = new File("/proc/meminfo");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader br = new BufferedReader(new InputStreamReader(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new FileInputStream(file)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] result = new int[4];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringTokenizer token = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((str = br.readLine()) != null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token = new StringTokenizer(str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!token.hasMoreTokens())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = token.nextToken();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!token.hasMoreTokens())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(str.equalsIgnoreCase("MemTotal:"))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[0] = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(str.equalsIgnoreCase("MemFree:"))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[1] = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(str.equalsIgnoreCase("SwapTotal:"))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[2] = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(str.equalsIgnoreCase("SwapFree:"))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[3] = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;<br />&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp; /**<br />&nbsp;&nbsp; * get memory by used info<br />&nbsp;&nbsp; * <br />&nbsp;&nbsp; * @return float efficiency<br />&nbsp;&nbsp; * @throws IOException<br />&nbsp;&nbsp; * @throws InterruptedException<br />&nbsp;&nbsp; */<br />&nbsp;&nbsp; public static float getCpuInfo() throws IOException, InterruptedException<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file = new File("/proc/stat");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader br = new BufferedReader(new InputStreamReader(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new FileInputStream(file)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringTokenizer token = new StringTokenizer(br.readLine());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token.nextToken();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int user1 = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int nice1 = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sys1 = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int idle1 = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(1000);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; br = new BufferedReader(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new InputStreamReader(new FileInputStream(file)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token = new StringTokenizer(br.readLine());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token.nextToken();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int user2 = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int nice2 = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sys2 = Integer.parseInt(token.nextToken());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int idle2 = Integer.parseInt(token.nextToken());<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));<br />&nbsp;&nbsp; }<br />}<br /><br />/**<br />* 测试类<br />* <br />* &lt;p>@author javer QQ:84831612&lt;/p><br />* @date 2005<br />*/<br />public class JaverTest<br />{<br />&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] memInfo = LinuxSystemTool.getMemInfo();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("MemTotal：" + memInfo[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("MemFree：" + memInfo[1]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SwapTotal：" + memInfo[2]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SwapFree：" + memInfo[3]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("CPU利用率：" + LinuxSystemTool.getCpuInfo());<br />&nbsp;&nbsp;&nbsp; }<br />} （http://people.ee.ethz.ch/~oetiker/webtools/mrtg/）就是一个很不错的选择。不过用mrtg就要装sysstat、apache、snmp、perl之类的东西。而且安装也要好几个步骤，似乎比较麻烦。本来也想直接调用sar、vmstat之类的命令，parse一下结果就算了。哪知道发现不同的版本的linux这些命令的结果也都是不一样。既然要按版本 parse它们的结果，那还不如直接去系统里面获得算了。于是研究了一下sysstat（http://freshmeat.net/projects/sysstat/）和gkrellm（http://gkrellm.net ）的源代码，找到监测性能的数据所在。 <br /><br /> <br /><br />1、CPU <br /><br /> <br /><br />在文件"/proc/stat"里面就包含了CPU的信息。每一个CPU的每一tick用在什么地方都在这个文件里面记着。后面的数字含义分别是： user、nice、sys、idle、iowait。有些版本的kernel没有iowait这一项。这些数值表示从开机到现在，CPU的每tick用在了哪里。例如： <br /><br />cpu0 256279030 0 11832528 1637168262 <br /><br />就是cpu0从开机到现在有 256279030 tick用在了user消耗，11832528用在了sys消耗。所以如果想计算单位时间（例如1s）里面CPU的负载，那只需要计算1秒前后数值的差除以每一秒的tick数量就可以了。gkrellm就是这样实现的：((200 * (v2 - v1) / CPU_TICKS_PER_SECOND) + 1) /2 <br /><br />例如，第一次读取/proc/stat，user的值是256279030；一秒以后再读一次，值是256289030，那么CPU在这一秒的user消耗就是：((200 * (256289030 - 256279030) / CPU_TICKS_PER_SECOND) + 1) /2 = ((10000 * 200 / 1000000) + 1) / 2 = 1%了。 <br /><br /> <br /><br />2、内存消耗 <br /><br /> <br /><br />文件"/proc/meminfo"里面包含的就是内存的信息，还包括了swap的信息。例如： <br /><br /> <br /><br /> <br /><br />$ cat /proc/meminfo<br /><br />total:&nbsp;&nbsp;&nbsp; used:&nbsp;&nbsp;&nbsp; free:&nbsp; shared: buffers:&nbsp; cached:<br />Mem:&nbsp; 1057009664 851668992 205340672&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 67616768 367820800<br />Swap: 2146787328 164429824 1982357504<br />MemTotal:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1032236 kB<br />MemFree:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200528 kB<br />MemShared:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 kB<br />…… <br /><br />不过从gkrellm的源代码看，有些版本没有前面那两行统计的信息，只能够根据下面的Key: Value这种各式的数据收集。 <br /><br /> <br /><br />3、磁盘空间 <br /><br /> <br /><br />从gkrellm的源代码看，这个是一个很复杂的数据。磁盘分区的数据有可能分布在：/proc/mounts、/proc/diskstats、 /proc/partitions等等。而且如果想要检查某几个特定的路径，还需要通过mount、df等命令的帮助。为了减少麻烦，这个数据我就直接用 statfs函数直接获得了。 <br /><br /> <br /><br />int statfs(const char *path, struct statfs *buf); <br /><br />这个函数只需要输入需要检查的路径名称，就可以返回这个路径所在的分区的空间使用情况： <br /><br />总空间：buf.f_bsize * buf.f_blocks <br /><br />空余空间：buf.f_bsize * buf.f_bavail <br /><br /> <br /><br />4、磁盘I/O <br /><br /> <br /><br />磁盘I/O的数据也同样比较复杂，有些版本看/proc/diskstats，有些版本看/proc/partitions，还有些版本至今我也不知道在那里看……不过可以看到数据的版本也像CPU那样，需要隔一段时间取值，两次取值的差就是流量。 <br /><br /> <br /><br />5、网络流量 <br /><br /> <br /><br />网络流量也是五花八门，不过基本上都可以在/proc/net/dev里面获得。同样也是需要两次取值取其差作为流量值。 <br /><br />Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
          <br/><br/>
          <span style="color:red;">
            <a href="http://papa.javaeye.com/blog/220532#comments" style="color:red;">已有 <strong>3</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">辉煌盛会-微软WinHec 2008 邀您共赴卓越</span></a></li></ul>
          <br/><br/><br/>
          <img src ="http://www.blogjava.net/ecsun/aggbug/229154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 14:18 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SNMP4j示例</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229153.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229153.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229153.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229153.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://papa.javaeye.com">ecsun</a>&nbsp;
                    链接：<a href="http://papa.javaeye.com/blog/220534" style="color:red;">http://papa.javaeye.com/blog/220534</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java代码 <br />#mib.properties&nbsp;&nbsp; <br />#Fri Jul 11 15:57:28 CST 2008&nbsp; <br />1.3.6.1.2.1.1.6.0=beijing&nbsp;&nbsp; <br />1.3.6.1.2.1.1.8.0=test&nbsp;&nbsp; <br />1.3.6.1.2.1.1.5.0=admin&nbsp;&nbsp; <br />1.3.6.1.2.1.1.7.0=8899&nbsp; <br /><br />#mib.properties<br />#Fri Jul 11 15:57:28 CST 2008<br />1.3.6.1.2.1.1.6.0=beijing<br />1.3.6.1.2.1.1.8.0=test<br />1.3.6.1.2.1.1.5.0=admin<br />1.3.6.1.2.1.1.7.0=8899 mib搞的两天不是很明白，于是自己定义了个配置文件来充当mib库，mib.properties<br /><br /> <br /><br />下面的例子是服务器端，也就是manager：<br /><br /> <br /><br />Java代码 <br />import java.io.IOException;&nbsp;&nbsp; <br />&nbsp; <br />import java.util.Vector;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.CommunityTarget;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.PDU;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.Snmp;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.TransportMapping;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.event.ResponseEvent;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.mp.SnmpConstants;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.smi.Address;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.smi.GenericAddress;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.smi.OID;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.smi.OctetString;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.smi.VariableBinding;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.transport.DefaultUdpTransportMapping;&nbsp;&nbsp; <br />&nbsp; <br />public class SnmpUtil {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; private Snmp snmp = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; private Address targetAddress = null;&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public void initComm() throws IOException {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 设置Agent方的IP和端口&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; targetAddress = GenericAddress.parse("udp:192.168.10.191/161");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TransportMapping transport = new DefaultUdpTransportMapping();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; snmp = new Snmp(transport);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transport.listen();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public ResponseEvent sendPDU(PDU pdu) throws IOException {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 设置 target&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CommunityTarget target = new CommunityTarget();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.setCommunity(new OctetString("public"));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.setAddress(targetAddress);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 通信不成功时的重试次数&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.setRetries(2);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 超时时间&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.setTimeout(1500);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.setVersion(SnmpConstants.version1);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 向Agent发送PDU，并返回Response&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return snmp.send(pdu, target);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public void setPDU() throws IOException {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set PDU&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PDU pdu = new PDU();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 7,&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 }), new OctetString("8899")));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pdu.setType(PDU.SET);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sendPDU(pdu);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; public void getPDU() throws IOException {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get PDU&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PDU pdu = new PDU();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 6,&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 })));// pcName&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pdu.setType(PDU.GET);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; readResponse(sendPDU(pdu));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public void readResponse(ResponseEvent respEvnt) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 解析Response&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("----------解析Response-------------");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (respEvnt != null && respEvnt.getResponse() != null) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vector&lt;VariableBinding> recVBs = respEvnt.getResponse()&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getVariableBindings();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; recVBs.size(); i++) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VariableBinding recVB = recVBs.elementAt(i);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .println(recVB.getOid() + " : " + recVB.getVariable());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public static void main(String[] args) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("----------start-------------");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SnmpUtil util = new SnmpUtil();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; util.initComm();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; util.setPDU();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; util.getPDU();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />}&nbsp; <br /><br />import java.io.IOException;<br /><br />import java.util.Vector;<br /><br />import org.snmp4j.CommunityTarget;<br /><br />import org.snmp4j.PDU;<br /><br />import org.snmp4j.Snmp;<br /><br />import org.snmp4j.TransportMapping;<br /><br />import org.snmp4j.event.ResponseEvent;<br /><br />import org.snmp4j.mp.SnmpConstants;<br /><br />import org.snmp4j.smi.Address;<br /><br />import org.snmp4j.smi.GenericAddress;<br /><br />import org.snmp4j.smi.OID;<br /><br />import org.snmp4j.smi.OctetString;<br /><br />import org.snmp4j.smi.VariableBinding;<br /><br />import org.snmp4j.transport.DefaultUdpTransportMapping;<br /><br />public class SnmpUtil {<br />	private Snmp snmp = null;<br />	private Address targetAddress = null;<br /><br />	public void initComm() throws IOException {<br />		// 设置Agent方的IP和端口<br />		targetAddress = GenericAddress.parse("udp:192.168.10.191/161");<br />		TransportMapping transport = new DefaultUdpTransportMapping();<br />		snmp = new Snmp(transport);<br />		transport.listen();<br />	}<br /><br />	public ResponseEvent sendPDU(PDU pdu) throws IOException {<br />		// 设置 target<br />		CommunityTarget target = new CommunityTarget();<br />		target.setCommunity(new OctetString("public"));<br />		target.setAddress(targetAddress);<br />		// 通信不成功时的重试次数<br />		target.setRetries(2);<br />		// 超时时间<br />		target.setTimeout(1500);<br />		target.setVersion(SnmpConstants.version1);<br />		// 向Agent发送PDU，并返回Response<br />		return snmp.send(pdu, target);<br />	}<br /><br />	public void setPDU() throws IOException {<br />		// set PDU<br />		PDU pdu = new PDU();<br />		pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 7,<br />				0 }), new OctetString("8899")));<br />		pdu.setType(PDU.SET);<br />		sendPDU(pdu);<br />	}<br />	public void getPDU() throws IOException {<br />		// get PDU<br />		PDU pdu = new PDU();<br />		pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 6,<br />				0 })));// pcName<br />		pdu.setType(PDU.GET);<br />		readResponse(sendPDU(pdu));<br />	}<br /><br />	public void readResponse(ResponseEvent respEvnt) {<br />		// 解析Response<br />		System.out.println("----------解析Response-------------");<br />		if (respEvnt != null && respEvnt.getResponse() != null) {<br />			Vector&lt;VariableBinding> recVBs = respEvnt.getResponse()<br />			.getVariableBindings();<br />			for (int i = 0; i &lt; recVBs.size(); i++) {<br />				VariableBinding recVB = recVBs.elementAt(i);<br />				System.out<br />						.println(recVB.getOid() + " : " + recVB.getVariable());<br />			}<br />		}<br /><br />	}<br /><br />	public static void main(String[] args) {<br />		System.out.println("----------start-------------");<br />		try {<br />			SnmpUtil util = new SnmpUtil();<br />			util.initComm();<br />			 util.setPDU();<br />			util.getPDU();<br />		} catch (IOException e) {<br /><br />			e.printStackTrace();<br /><br />		}<br /><br />	}<br /><br />} <br /><br />agent代理端代码：<br /><br /> <br /><br />Java代码 <br />import java.util.*;&nbsp;&nbsp; <br />/**&nbsp; <br /> * ａｇｅｎｔ代理端&nbsp; <br /> * leo&nbsp; <br /> * 20080710&nbsp; <br /> */&nbsp; <br />import org.snmp4j.*;&nbsp;&nbsp; <br />import org.snmp4j.smi.*;&nbsp;&nbsp; <br />&nbsp; <br />import snmputil.Config;&nbsp;&nbsp; <br />&nbsp; <br />public class OTAAgent {&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public static class Handler implements org.snmp4j.CommandResponder {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected java.lang.String mAddress = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected int mPort = 0;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected java.lang.String mMyCommunityName = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected org.snmp4j.TransportMapping mServerSocket = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected org.snmp4j.Snmp mSNMP = null;&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Handler() {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void configure() {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mAddress = "192.168.10.191";&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mPort = 161;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mMyCommunityName = "OAagent";&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void start() {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mServerSocket = new org.snmp4j.transport.DefaultUdpTransportMapping(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new org.snmp4j.smi.UdpAddress(java.net.InetAddress&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getByName(mAddress), mPort));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mSNMP = new org.snmp4j.Snmp(mServerSocket);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mSNMP.addCommandResponder(this);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mServerSocket.listen();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (java.net.UnknownHostException vException) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(vException);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (java.io.IOException vException) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(vException);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public synchronized void processPdu(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.snmp4j.CommandResponderEvent aEvent) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.lang.String vCommunityName = new java.lang.String(aEvent&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getSecurityName());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Community name " + vCommunityName);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.snmp4j.PDU vPDU = aEvent.getPDU();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Config config=new Config();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (vPDU == null) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Null pdu");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("(rcv) " + vPDU.toString());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (vPDU.getType()) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case org.snmp4j.PDU.GET:&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case org.snmp4j.PDU.GETNEXT:&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case org.snmp4j.PDU.SET:&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("------SET----------");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String reciv=vPDU.get(0).getVariable().getSyntaxString();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("----set------"+vPDU.get(0).toString());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String setoid=vPDU.get(0).toString();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("-----set-----"+setoid.substring(0, setoid.indexOf("=")-1));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("-----set-----"+setoid.substring(setoid.indexOf("=")+1));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.setValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim(), setoid.substring(setoid.indexOf("=")+1).trim());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.snmp4j.mp.StatusInformation statusInformation = new org.snmp4j.mp.StatusInformation();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.snmp4j.mp.StateReference ref = aEvent.getStateReference();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Sending response");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vPDU.setType(PDU.RESPONSE);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OID oid=vPDU.get(0).getOid();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String setoid=vPDU.get(0).toString();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("----get------"+setoid.substring(0, setoid.indexOf("=")-1));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("-----get-----"+setoid.substring(setoid.indexOf("=")+1));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vPDU.set(0, new VariableBinding(oid,&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new OctetString(config.getValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim()))));&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getMessageDispatcher().returnResponsePdu(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getMessageProcessingModel(),&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getSecurityModel(),&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getSecurityName(),&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getSecurityLevel(), vPDU,&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getMaxSizeResponsePDU(), ref,&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; statusInformation);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (org.snmp4j.MessageException vException) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(vException);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public static void main(String argv[]) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Handler h = new Handler();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** 初始化参数 * */&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h.configure();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h.start();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** Do nothing loop * */&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (true) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("----------loop-------------");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; synchronized (OTAAgent.class) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTAAgent.class.wait();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />}&nbsp; <br /><br />import java.util.*;<br />/**<br /> * ａｇｅｎｔ代理端<br /> * leo<br /> * 20080710<br /> */<br />import org.snmp4j.*;<br />import org.snmp4j.smi.*;<br /><br />import snmputil.Config;<br /><br />public class OTAAgent {<br /><br />	public static class Handler implements org.snmp4j.CommandResponder {<br />		protected java.lang.String mAddress = null;<br />		protected int mPort = 0;<br />		protected java.lang.String mMyCommunityName = null;<br />		protected org.snmp4j.TransportMapping mServerSocket = null;<br />		protected org.snmp4j.Snmp mSNMP = null;<br /><br />		public Handler() {<br />		}<br /><br />		public void configure() {<br />			mAddress = "192.168.10.191";<br />			mPort = 161;<br />			mMyCommunityName = "OAagent";<br />		}<br /><br />		public void start() {<br />			try {<br />				mServerSocket = new org.snmp4j.transport.DefaultUdpTransportMapping(<br />						new org.snmp4j.smi.UdpAddress(java.net.InetAddress<br />								.getByName(mAddress), mPort));<br />				mSNMP = new org.snmp4j.Snmp(mServerSocket);<br />				mSNMP.addCommandResponder(this);<br />				mServerSocket.listen();<br />			} catch (java.net.UnknownHostException vException) {<br />				System.out.println(vException);<br />			} catch (java.io.IOException vException) {<br />				System.out.println(vException);<br />			}<br />		}<br /><br />		public synchronized void processPdu(<br />				org.snmp4j.CommandResponderEvent aEvent) {<br />			java.lang.String vCommunityName = new java.lang.String(aEvent<br />					.getSecurityName());<br />			System.out.println("Community name " + vCommunityName);<br />			org.snmp4j.PDU vPDU = aEvent.getPDU();<br />			Config config=new Config();<br />			if (vPDU == null) {<br />				System.out.println("Null pdu");<br />			} else {<br />				System.out.println("(rcv) " + vPDU.toString());<br />				switch (vPDU.getType()) {<br />				case org.snmp4j.PDU.GET:<br />				case org.snmp4j.PDU.GETNEXT:<br />					break;<br />				case org.snmp4j.PDU.SET:<br />					System.out.println("------SET----------");<br />					String reciv=vPDU.get(0).getVariable().getSyntaxString();<br />					System.out.println("----set------"+vPDU.get(0).toString());<br />					String setoid=vPDU.get(0).toString();<br />					System.out.println("-----set-----"+setoid.substring(0, setoid.indexOf("=")-1));<br />					System.out.println("-----set-----"+setoid.substring(setoid.indexOf("=")+1));<br />					config.setValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim(), setoid.substring(setoid.indexOf("=")+1).trim());<br />				}<br />				org.snmp4j.mp.StatusInformation statusInformation = new org.snmp4j.mp.StatusInformation();<br />				org.snmp4j.mp.StateReference ref = aEvent.getStateReference();<br />				try {<br />					System.out.println("Sending response");<br />					vPDU.setType(PDU.RESPONSE);<br />					<br />					OID oid=vPDU.get(0).getOid();<br />					String setoid=vPDU.get(0).toString();<br />					System.out.println("----get------"+setoid.substring(0, setoid.indexOf("=")-1));<br />					System.out.println("-----get-----"+setoid.substring(setoid.indexOf("=")+1));<br />					vPDU.set(0, new VariableBinding(oid,<br />							new OctetString(config.getValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim()))));<br /><br />					aEvent.getMessageDispatcher().returnResponsePdu(<br />							aEvent.getMessageProcessingModel(),<br /><br />							aEvent.getSecurityModel(),<br />							aEvent.getSecurityName(),<br /><br />							aEvent.getSecurityLevel(), vPDU,<br />							aEvent.getMaxSizeResponsePDU(), ref,<br /><br />							statusInformation);<br />				} catch (org.snmp4j.MessageException vException) {<br />					System.out.println(vException);<br />				}<br />			}<br />		}<br />	}<br /><br />	public static void main(String argv[]) {<br />		Handler h = new Handler();<br />		/** 初始化参数 * */<br />		h.configure();<br />		h.start();<br />		/** Do nothing loop * */<br />		while (true) {<br />			System.out.println("----------loop-------------");<br />			synchronized (OTAAgent.class) {<br />				try {<br />					OTAAgent.class.wait();<br />				} catch (Exception e) {<br />				}<br />			}<br />		}<br />	}<br />} <br /><br />还有一个就是获取和保存mib信息的类：<br /><br /> <br /><br />Java代码 <br />package snmputil;&nbsp;&nbsp; <br />&nbsp; <br />import java.io.BufferedReader;&nbsp;&nbsp; <br />import java.io.File;&nbsp;&nbsp; <br />import java.io.FileInputStream;&nbsp;&nbsp; <br />import java.io.FileNotFoundException;&nbsp;&nbsp; <br />import java.io.FileOutputStream;&nbsp;&nbsp; <br />import java.io.FileReader;&nbsp;&nbsp; <br />import java.io.IOException;&nbsp;&nbsp; <br />import java.util.HashMap;&nbsp;&nbsp; <br />import java.util.Hashtable;&nbsp;&nbsp; <br />import java.util.Map;&nbsp;&nbsp; <br />import java.util.Properties;&nbsp;&nbsp; <br />&nbsp; <br />public class Config {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Properties properties;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Map map;&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public Config() {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties = new Properties();&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.load(new FileInputStream("mib.properties"));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("读取properties文件错误");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; /**&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; * 根据oid获取value&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; * @param oid&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; * @return&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp; <br />&nbsp;&nbsp;&nbsp; public String getValueByOID(String oid) {&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return properties.getProperty(oid);&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public void setValueByOID(String oid, String value) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.setProperty(oid, value);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.store(new FileOutputStream("mib.properties"),"mib.properties");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (FileNotFoundException e) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated catch block&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated catch block&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; //测试主函数&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Config cfg=new Config();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String oid="1.3.6.1.2.1.1.8.0";&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("---------"+cfg.getValueByOID(oid));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cfg.setValueByOID(oid, "test");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("---------"+cfg.getValueByOID(oid));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />}&nbsp; <br /><br />package snmputil;<br /><br />import java.io.BufferedReader;<br />import java.io.File;<br />import java.io.FileInputStream;<br />import java.io.FileNotFoundException;<br />import java.io.FileOutputStream;<br />import java.io.FileReader;<br />import java.io.IOException;<br />import java.util.HashMap;<br />import java.util.Hashtable;<br />import java.util.Map;<br />import java.util.Properties;<br /><br />public class Config {<br />	Properties properties;<br />	Map map;<br /><br />	public Config() {<br />		properties = new Properties();<br /><br />		try {<br />			properties.load(new FileInputStream("mib.properties"));<br />		} catch (IOException e) {<br />			System.out.println("读取properties文件错误");<br />			e.printStackTrace();<br />		}<br />	}<br /><br />	/**<br />	 * 根据oid获取value<br />	 * <br />	 * @param oid<br />	 * @return<br />	 */<br />	public String getValueByOID(String oid) {<br /><br />		return properties.getProperty(oid);<br /><br />	}<br /><br />	public void setValueByOID(String oid, String value) {<br />		<br />		properties.setProperty(oid, value);<br />		try {<br />			properties.store(new FileOutputStream("mib.properties"),"mib.properties");<br />		} catch (FileNotFoundException e) {<br />			// TODO Auto-generated catch block<br />			e.printStackTrace();<br />		} catch (IOException e) {<br />			// TODO Auto-generated catch block<br />			e.printStackTrace();<br />		} <br />	<br /><br />	}<br /><br />	//测试主函数<br />	&nbsp;&nbsp; public static void main(String[] args) {<br />		&nbsp;&nbsp; Config cfg=new Config();<br />		&nbsp;&nbsp; String oid="1.3.6.1.2.1.1.8.0";<br />		&nbsp;&nbsp; System.out.println("---------"+cfg.getValueByOID(oid));<br />		&nbsp;&nbsp; <br />		&nbsp;&nbsp; cfg.setValueByOID(oid, "test");<br />		<br />		&nbsp;&nbsp; <br />		<br />		&nbsp;&nbsp; System.out.println("---------"+cfg.getValueByOID(oid));<br />	&nbsp;&nbsp; }<br />}
          <br/><br/>
          <span style="color:red;">
            <a href="http://papa.javaeye.com/blog/220534#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">辉煌盛会-微软WinHec 2008 邀您共赴卓越</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <img src ="http://www.blogjava.net/ecsun/aggbug/229153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 14:18 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PDU</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229152.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229152.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229152.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229152.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229152.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229152.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://papa.javaeye.com">ecsun</a>&nbsp;
                    链接：<a href="http://papa.javaeye.com/blog/220536" style="color:red;">http://papa.javaeye.com/blog/220536</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          PDU（协议数据单元），用来表示管理站跟代理站点进行通信的数据。包括PDU的类型、传输的数据集合、错误说明等。<br />&nbsp;&nbsp;&nbsp; 除Snmpv1 Trap外，其他操作类型的PDU大致相同。<br />&nbsp;&nbsp;&nbsp; Snmp4j针对Snmp的各个版本，开发了三个有关PDU的类。PDU（针对Snmpv2c）、PDUv1（针对Snmpv1）、ScopedPDU（针对Snmpv3），但三个类除各自特别的一些参数外，都基本相同。所以Snmp4j在设计的时候，将PDU设计成另外两个的超类，使他们能够共享大部分功能。<br /><br />（1）PDU<br />&nbsp;&nbsp;&nbsp; 1）pdu类型（Snmpv1支持5种，get、set、getnext、trap、getresponse,Snmpv2c增加了getbulk、inform）<br />&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getType（）<br />&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp; setType（int type)<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 2）错误（主要有6种错误，请参见RFC）<br />&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp; setErrorStatus(int&nbsp;&nbsp; status)<br />&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getErrorStatus()<br />&nbsp;&nbsp;&nbsp; String&nbsp;&nbsp;&nbsp; getErrorStatusText()<br />&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp; setErrorIndex（int index）<br />&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getErrorindex（）<br /><br />&nbsp;&nbsp;&nbsp; 3）变量<br />&nbsp;&nbsp;&nbsp; void add(VariableBinding vb) // 对于除get、getnext、getbulk外<br />&nbsp;&nbsp;&nbsp; void addAll(VariableBinding[] vbs) // 对于除get、getnext、getbulk外的<br />&nbsp;&nbsp;&nbsp; void addOID(VariableBinding vb) // 对于get、getnext、getbulk<br />&nbsp;&nbsp;&nbsp; void addAllOID(VariableBinding[] vbs) // 对于get、getnext、getbulk<br />&nbsp;&nbsp;&nbsp; VariableBinding get（int i）<br />&nbsp;&nbsp;&nbsp; VariableBinding[] toArray()<br />&nbsp;&nbsp;&nbsp; Vector&nbsp;&nbsp; getVariableBindings()<br />&nbsp;&nbsp;&nbsp; void set（int i，VariableBinding vb）<br />&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp; remove（int i）<br />&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp; clear（）<br />&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; size（）<br />&nbsp;&nbsp;&nbsp; <br />（2）PDUv1<br />&nbsp;&nbsp;&nbsp; PDUv1继承了PDU，除Snmp v1 trap操作外 ，其它都跟PDU相同。因为Snmp v1的Trap设计PDU不同于其他操作的PDU，它包括：对象标识符（OID）、代理ip地址（agent-addr）、时间戳（time-stamp）、通用代理类型（generic-trap）、特定代理类型（specific-trap)。所以相应的增加了对这些字段的get/set操作。具体参见API文档。<br /><br />（3）ScopedPDU<br />&nbsp;&nbsp;&nbsp; SnmpV3采用了不同安全策略，它的PDU也增加了有关安全方面的几个字段：上下文名称（ContextName）、上下文引擎ID（contextEngineID）等，其它PDU字段属于USM来管理。<br />&nbsp;&nbsp;&nbsp; 所以ScopedPDU在PDU的基础上增加了相应的get/set操作。参见API。<br /><br />示例代码如下：（摘自API文档）<br /><br />SNMPv1/v2c GETNEXT PDU <br />import org.snmp4j.PDU;<br />import org.snmp4j.smi.*;<br />...<br />PDU pdu = new PDU();<br />pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1"))); // sysDescr<br />pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.1"))); // ifNumber<br />pdu.setType(PDU.GETNEXT);<br />...SNMPv3 GETBULK PDU <br />import org.snmp4j.ScopedPDU;<br />import org.snmp4j.smi.*;<br />...<br />ScopedPDU pdu = new ScopedPDU();<br />pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.1"))); // ifNumber<br />pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.10"))); // ifInOctets<br />pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.16"))); // ifOutOctets<br />pdu.setType(PDU.GETBULK);<br />pdu.setMaxRepetitions(50);<br />// Get ifNumber only once<br />pdu.setNonRepeaters(1);<br />// set context non-default context (default context does not need to be set)<br />pdu.setContextName(new OctetString("subSystemContextA"));<br />// set non-default context engine ID (to use targets authoritative engine ID<br />// use an empty (size == 0) octet string)<br />pdu.setContextEngineID(OctetString.fromHexString("80:00:13:70:c0:a8:01:0d"));<br />...SNMPv1 TRAP PDU <br />import org.snmp4j.PDUv1;<br />...<br />PDUv1 pdu = new PDUv1();<br />pdu.setType(PDU.V1TRAP);<br />pdu.setGenericTrap(PDUv1.COLDSTART);<br />...SNMPv2c/SNMPv3 INFORM PDU <br />import org.snmp4j.ScopedPDU;<br />...<br />ScopedPDU pdu = new ScopedPDU();<br />pdu.setType(PDU.INFORM);<br />// sysUpTime<br />long sysUpTime = (System.currentTimeMillis() - startTime) / 10;<br />pdu.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(sysUpTime)));<br />pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, SnmpConstants.linkDown));<br />// payload<br />pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.1"+downIndex),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Integer32(downIndex)));
          <br/><br/>
          <span style="color:red;">
            <a href="http://papa.javaeye.com/blog/220536#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">辉煌盛会-微软WinHec 2008 邀您共赴卓越</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <img src ="http://www.blogjava.net/ecsun/aggbug/229152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 14:18 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>target</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229151.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229151.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229151.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229151.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229151.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229151.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://papa.javaeye.com">ecsun</a>&nbsp;
                    链接：<a href="http://papa.javaeye.com/blog/220544" style="color:red;">http://papa.javaeye.com/blog/220544</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          关于Snmp4j包，最重要三个概念，也是三个类：Snmp、Target、PDU。<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Target，表示被管理的设备。对于一个被管理的设备，我们关注它的Address，它使用的协议版本version，访问它的用户名和密码、以及对这个设备我们设置跟它打交道的一些策略，比如超时时间、重传次数等。所以有如下方法：<br />&nbsp;&nbsp;&nbsp; 1）获取或者设置ip地址<br />&nbsp;&nbsp;&nbsp; void setAddress（Address address）&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; Address getAddress（）<br />&nbsp;&nbsp;&nbsp; 2）设置或者获取版本号（支持V1，V2c，V3）<br />&nbsp;&nbsp;&nbsp; void setVersion（int ver）<br />&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getVersion（）<br />&nbsp;&nbsp;&nbsp; 3）超时时间 （ 单位：milliseconds ）<br />&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp; setTimeout(long out）<br />&nbsp;&nbsp;&nbsp; long getTimeout（）<br />&nbsp;&nbsp;&nbsp; 4）重传次数<br />&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp; setRetries(int retries)<br />&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getRetries()<br />&nbsp;&nbsp;&nbsp; 5）最大PDU大小值<br />&nbsp;&nbsp;&nbsp; void setMaxSizeRequestPDU（int max）<br />&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getMaxSizeRequestPDU（）<br /><br />&nbsp;&nbsp;&nbsp; 上面这些对于Snmp三个版本都是相同的，不同的只是在于安全方面，具体来说，Snmpv1，v2c采用共同体（community）方式，安全性很差；SnmpV3采用基于用户的安全（USM）方式，安全性能得到很大提高。<br />&nbsp;&nbsp; （1） 对于Snmpv1，v2c，使用Target派生出一个子类CommunityTarget，增加了对Community的方法：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void setCommunity（OctetString community）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OctetString getCommunity（）<br /><br />&nbsp;&nbsp;&nbsp; （2）对于SnmpV3，使用其子类UserTarget，增加了一些有关USM安全方面的设置，比如采用的安全模型、安全级别、访问该设备的用户名以及权威引擎ID（authoritative engine ID）：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i）安全级别（支持三种安全级别）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void setSecurityLevel(int level)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getSecurityLevel()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii）访问用户名（该访问用户名称必须在设置USM的时候添加其相应的UsmUser）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void setSecurityName(OctetString name)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OctetString&nbsp;&nbsp; getSecurityName()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii）安全模型（支持三种安全模型）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void setSecurityModel(int model)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getSecurityModel()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; V）权威引擎ID（authoritative engine ID）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp; setAuthoritativeEngineID(byte[] id)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] getAuthoritativeEngineID（）<br />&nbsp;&nbsp;&nbsp; <br />对于Target的代码大致如下：（摘自Snmp4j的说明文档）<br /><br />Community Target <br />CommunityTarget target = new CommunityTarget();<br />target.setCommunity(new OctetString("public"));<br />target.setAddress(targetAddress);<br />target.setVersion(SnmpConstants.version1);User Target <br />UserTarget target = new UserTarget();<br />target.setAddress(targetAddress);<br />target.setRetries(1);<br />// set timeout to 500 milliseconds -> 2*500ms = 1s total timeout<br />target.setTimeout(500);<br />target.setVersion(SnmpConstants.version3);<br />target.setSecurityLevel(SecurityLevel.AUTH_PRIV);<br />target.setSecurityName(new OctetString("MD5DES"));
          <br/><br/>
          <span style="color:red;">
            <a href="http://papa.javaeye.com/blog/220544#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">辉煌盛会-微软WinHec 2008 邀您共赴卓越</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <img src ="http://www.blogjava.net/ecsun/aggbug/229151.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 14:18 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229151.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>agent</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229150.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229150.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229150.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229150.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229150.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://papa.javaeye.com">ecsun</a>&nbsp;
                    链接：<a href="http://papa.javaeye.com/blog/220559" style="color:red;">http://papa.javaeye.com/blog/220559</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          ａｇｅｎｔ代理端例子：<br /><br /> <br /><br />Java代码 <br />import java.util.*;&nbsp;&nbsp; <br />&nbsp; <br />import org.snmp4j.*;&nbsp;&nbsp; <br />import org.snmp4j.smi.*;&nbsp;&nbsp; <br />//ａｇｅｎｔ代理端例子：&nbsp;&nbsp; <br />public class Test2 {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; public static class Handler implements org.snmp4j.CommandResponder {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected java.lang.String mAddress = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected int mPort = 0;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected java.lang.String mMyCommunityName = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected org.snmp4j.TransportMapping mServerSocket = null;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected org.snmp4j.Snmp mSNMP = null;&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Handler() {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void configure() {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mAddress = "192.168.10.191";&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mPort = 161;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mMyCommunityName = "test";&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void start() {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mServerSocket = new org.snmp4j.transport.DefaultUdpTransportMapping(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new org.snmp4j.smi.UdpAddress(java.net.InetAddress&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getByName(mAddress), mPort));&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mSNMP = new org.snmp4j.Snmp(mServerSocket);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mSNMP.addCommandResponder(this);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mServerSocket.listen();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (java.net.UnknownHostException vException) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(vException);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (java.io.IOException vException) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(vException);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public synchronized void processPdu(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.snmp4j.CommandResponderEvent aEvent) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.lang.String vCommunityName = new java.lang.String(aEvent&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getSecurityName());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Community name " + vCommunityName);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.snmp4j.PDU vPDU = aEvent.getPDU();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (vPDU == null) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Null pdu");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("(rcv) " + vPDU.toString());&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (vPDU.getType()) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case org.snmp4j.PDU.GET:&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case org.snmp4j.PDU.GETNEXT:&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.snmp4j.mp.StatusInformation statusInformation = new org.snmp4j.mp.StatusInformation();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.snmp4j.mp.StateReference ref = aEvent.getStateReference();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Sending response");&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vPDU.setType(PDU.RESPONSE);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vPDU.set(0, new VariableBinding(vPDU.get(0).getOid(),&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new OctetString("Test")));&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getMessageDispatcher().returnResponsePdu(&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getMessageProcessingModel(),&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getSecurityModel(),&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getSecurityName(),&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getSecurityLevel(), vPDU,&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aEvent.getMaxSizeResponsePDU(), ref,&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; statusInformation);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (org.snmp4j.MessageException vException) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(vException);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; public static void main(String argv[]) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Handler h = new Handler();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h.configure();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h.start();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** Do nothing loop * */&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (true) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; synchronized (Test2.class) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Test2.class.wait();&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />}
          <br/><br/>
          <span style="color:red;">
            <a href="http://papa.javaeye.com/blog/220559#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">辉煌盛会-微软WinHec 2008 邀您共赴卓越</span></a></li></ul>
          <br/><br/><br/>
          <img src ="http://www.blogjava.net/ecsun/aggbug/229150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 14:18 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SNMP常用OID</title><link>http://www.blogjava.net/ecsun/archive/2008/09/16/229149.html</link><dc:creator>海鹏</dc:creator><author>海鹏</author><pubDate>Tue, 16 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/ecsun/archive/2008/09/16/229149.html</guid><wfw:comment>http://www.blogjava.net/ecsun/comments/229149.html</wfw:comment><comments>http://www.blogjava.net/ecsun/archive/2008/09/16/229149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ecsun/comments/commentRss/229149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ecsun/services/trackbacks/229149.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://papa.javaeye.com">ecsun</a>&nbsp;
                    链接：<a href="http://papa.javaeye.com/blog/221419" style="color:red;">http://papa.javaeye.com/blog/221419</a>&nbsp;
          发表时间: 2008年07月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Linux SNMP OID’s for CPU,Memory and Disk Statistics<br /><br /> <br /><br />SNMP stands for Simple Network Management Protocol and consists of three key components: managed devices, agents, and network-management systems (NMSs). A managed device is a node that has an SNMP agent and resides on a managed network. These devices can be routers and access server, switches and bridges, hubs, computer hosts, or printers. An agent is a software module residing within a device. This agent translates information into a compatible format with SNMP. An NMS runs monitoring applications. They provide the bulk of processing and memory resources required for network management.<br /><br />SNMP MIBs, OIDs Overview<br /><br />MIB stands for Management Information Base and is a collection of information organized hierarchically. These are accessed using a protocol such as SNMP. There are two types of MIBs: scalar and tabular. Scalar objects define a single object instance whereas tabular objects define multiple related object instances grouped in MIB tables.<br /><br />MIB files for specific devices or systems can be downloaded from here<br /><br />OIDs or Object Identifiers uniquely identify manged objects in a MIB hierarchy. This can be depicted as a tree, the levels of which are assigned by different organizations. Top level MIB object IDs (OIDs) belong to different standard organizations. Vendors define private branches including managed objects for their own products.<br /><br />Here is a sample structure of an OID<br /><br />Iso (1).org(3).dod(6).internet(1).private(4).transition(868).products(2).chassis(4).card(1).slotCps(2)­<br />.­cpsSlotSummary(1).cpsModuleTable(1).cpsModuleEntry(1).cpsModuleModel(3).3562.3<br /><br />Most of the people may be looking for OID’s for Linux OID’s for CPU,Memory and Disk Statistics for this first you need to install SNMP server and clients. If you want to install SNMP server and client installation in linux学习 check here<br /><br />CPU Statistics<br /><br />Load<br />1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1<br />5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2<br />15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3<br /><br />CPU<br />percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0<br />raw user cpu time: .1.3.6.1.4.1.2021.11.50.0<br />percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0<br />raw system cpu time: .1.3.6.1.4.1.2021.11.52.0<br />percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0<br />raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0<br />raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0<br /><br />Memory Statistics<br /><br />Total Swap Size: .1.3.6.1.4.1.2021.4.3.0<br />Available Swap Space: .1.3.6.1.4.1.2021.4.4.0<br />Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0<br />Total RAM used: .1.3.6.1.4.1.2021.4.6.0<br />Total RAM Free: .1.3.6.1.4.1.2021.4.11.0<br />Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0<br />Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0<br />Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0<br /><br />Disk Statistics<br /><br />The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ‘/’ partition):<br /><br />disk / 100000 (or)<br /><br />includeAllDisks 10% for all partitions and disks<br /><br />The OIDs are as follows<br /><br />Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1<br />Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1<br />Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1<br />Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1<br />Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1<br />Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1<br />Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1<br /><br />System Uptime: .1.3.6.1.2.1.1.3.0<br /><br />Examples<br /><br />These Commands you need to run on the SNMP server<br /><br />Get available disk space for / on the target host<br /><br />#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.9.1.7.1<br /><br />this will return available disk space for the first entry in the ‘disk’ section of snmpd.conf; replace 1 with n for the nth entry<br /><br />Get the 1-minute system load on the target host<br /><br />#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.1<br /><br />Get the 5-minute system load on the target host<br /><br />#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.2<br /><br />Get the 15-minute system load on the target host<br /><br />#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.3<br /><br />Get amount of available swap space on the target host<br /><br />#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.4.4.0<br /><br /><br /><br />Variable Descriptor Object Identifier <br />System Group&nbsp; <br />sysDescr 1.3.6.1.2.1.1.1 <br />sysObjectID 1.3.6.1.2.1.1.2 <br />sysUpTime 1.3.6.1.2.1.1.3 <br />sysContact 1.3.6.1.2.1.1.4 <br />sysName 1.3.6.1.2.1.1.5 <br />sysLocation 1.3.6.1.2.1.1.6 <br />sysServices 1.3.6.1.2.1.1.7 <br />Interfaces Group&nbsp; <br />ifNumber 1.3.6.1.2.1.2.1 <br />ifTable&nbsp; 1.3.6.1.2.1.2.2 <br />ifEntry 1.3.6.1.2.1.2.2.1 <br />ifIndex 1.3.6.1.2.1.2.2.1.1 <br />ifDescr 1.3.6.1.2.1.2.2.1.2 <br />ifType 1.3.6.1.2.1.2.2.1.3 <br />ifMtu 1.3.6.1.2.1.2.2.1.4 <br />ifSpeed 1.3.6.1.2.1.2.2.1.5 <br />ifPhysAddress 1.3.6.1.2.1.2.2.1.6 <br />ifAdminStatus 1.3.6.1.2.1.2.2.1.7 <br />ifOperStatus 1.3.6.1.2.1.2.2.1.8 <br />ifLastChange 1.3.6.1.2.1.2.2.1.9 <br />ifInOctets 1.3.6.1.2.1.2.2.1.10 <br />ifInUcastPkts 1.3.6.1.2.1.2.2.1.11 <br />ifInNUcastPkts 1.3.6.1.2.1.2.2.1.12 <br />ifInDiscards 1.3.6.1.2.1.2.2.1.13 <br />ifInErrors 1.3.6.1.2.1.2.2.1.14 <br />ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15 <br />ifOutOctets 1.3.6.1.2.1.2.2.1.16 <br />ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17 <br />ifOutNUcastPkts 1.3.6.1.2.1.2.2.1.18 <br />ifOutDiscards 1.3.6.1.2.1.2.2.1.19 <br />ifOutErrors 1.3.6.1.2.1.2.2.1.20 <br />ifOutQLen 1.3.6.1.2.1.2.2.1.21 <br />ifSpecific 1.3.6.1.2.1.2.2.1.22 <br />IP Group&nbsp; <br />ipForwarding 1.3.6.1.2.1.4.1 <br />ipDefaultTTL 1.3.6.1.2.1.4.2 <br />ipInReceives 1.3.6.1.2.1.4.3 <br />ipInHdrErrors 1.3.6.1.2.1.4.4 <br />ipInAddrErrors 1.3.6.1.2.1.4.5 <br />ipForwDatagrams 1.3.6.1.2.1.4.6 <br />ipInUnknownProtos 1.3.6.1.2.1.4.7 <br />ipInDiscards 1.3.6.1.2.1.4.8 <br />ipInDelivers 1.3.6.1.2.1.4.9 <br />ipOutRequests 1.3.6.1.2.1.4.10 <br />ipOutDiscards 1.3.6.1.2.1.4.11 <br />ipOutNoRoutes 1.3.6.1.2.1.4.12 <br />ipReasmTimeout 1.3.6.1.2.1.4.13 <br />ipReasmReqds 1.3.6.1.2.1.4.14 <br />ipReasmOKs 1.3.6.1.2.1.4.15 <br />ipReasmFails 1.3.6.1.2.1.4.16 <br />ipFragsOKs 1.3.6.1.2.1.4.17 <br />ipFragsFails 1.3.6.1.2.1.4.18 <br />ipFragCreates 1.3.6.1.2.1.4.19 <br />ipAddrTable&nbsp; 1.3.6.1.2.1.4.20 <br />ipAddrEntry 1.3.6.1.2.1.4.20.1 <br />ipAdEntAddr 1.3.6.1.2.1.4.20.1.1 <br />ipAdEntIfIndex 1.3.6.1.2.1.4.20.1.2 <br />ipAdEntNetMask 1.3.6.1.2.1.4.20.1.3 <br />ipAdEntBcastAddr 1.3.6.1.2.1.4.20.1.4 <br />ipAdEntReasmMaxSize 1.3.6.1.2.1.4.20.1.5 <br />ICMP Group&nbsp; <br />icmpInMsgs 1.3.6.1.2.1.5.1 <br />icmpInErrors 1.3.6.1.2.1.5.2 <br />icmpInDestUnreachs 1.3.6.1.2.1.5.3 <br />icmpInTimeExcds 1.3.6.1.2.1.5.4 <br />icmpInParmProbs 1.3.6.1.2.1.5.5 <br />icmpInSrcQuenchs 1.3.6.1.2.1.5.6 <br />icmpInRedirects 1.3.6.1.2.1.5.7 <br />icmpInEchos 1.3.6.1.2.1.5.8 <br />icmpInEchoReps 1.3.6.1.2.1.5.9 <br />icmpInTimestamps 1.3.6.1.2.1.5.10 <br />icmpInTimestampReps 1.3.6.1.2.1.5.11 <br />icmpInAddrMasks 1.3.6.1.2.1.5.12 <br />icmpInAddrMaskReps 1.3.6.1.2.1.5.13 <br />icmpOutMsgs 1.3.6.1.2.1.5.14 <br />icmpOutErrors 1.3.6.1.2.1.5.15 <br />icmpOutDestUnreachs 1.3.6.1.2.1.5.16 <br />icmpOutTimeExcds 1.3.6.1.2.1.5.17 <br />icmpOutParmProbs 1.3.6.1.2.1.5.18 <br />icmpOutSrcQuenchs 1.3.6.1.2.1.5.19 <br />icmpOutRedirects 1.3.6.1.2.1.5.20 <br />icmpOutEchos 1.3.6.1.2.1.5.21 <br />icmpOutEchoReps 1.3.6.1.2.1.5.22 <br />icmpOutTimestamps 1.3.6.1.2.1.5.23 <br />icmpOutTimestampReps 1.3.6.1.2.1.5.24 <br />icmpOutAddrMasks 1.3.6.1.2.1.5.25 <br />icmpOutAddrMaskReps 1.3.6.1.2.1.5.26 <br />TCP Group&nbsp; <br />tcpRtoAlgorithm 1.3.6.1.2.1.6.1 <br />tcpRtoMin 1.3.6.1.2.1.6.2 <br />tcpRtoMax 1.3.6.1.2.1.6.3 <br />tcpMaxConn 1.3.6.1.2.1.6.4 <br />tcpActiveOpens 1.3.6.1.2.1.6.5 <br />tcpPassiveOpens 1.3.6.1.2.1.6.6 <br />tcpAttemptFails 1.3.6.1.2.1.6.7 <br />tcpEstabResets 1.3.6.1.2.1.6.8 <br />tcpCurrEstab 1.3.6.1.2.1.6.9 <br />tcpInSegs 1.3.6.1.2.1.6.10 <br />tcpOutSegs 1.3.6.1.2.1.6.11 <br />tcpRetransSegs 1.3.6.1.2.1.6.12 <br />tcpConnTable&nbsp; 1.3.6.1.2.1.6.13 <br />tcpConnEntry 1.3.6.1.2.1.6.13.1 <br />tcpConnState 1.3.6.1.2.1.6.13.1.1 <br />tcpConnLocalAddress 1.3.6.1.2.1.6.13.1.2 <br />tcpConnLocalPort 1.3.6.1.2.1.6.13.1.3 <br />tcpConnRemAddress 1.3.6.1.2.1.6.13.1.4 <br />tcpConnRemPort 1.3.6.1.2.1.6.13.1.5 <br />tcpInErrs 1.3.6.1.2.1.6.14 <br />tcpOutRsts 1.3.6.1.2.1.6.15 <br />UDP Group&nbsp; <br />udpInDatagrams 1.3.6.1.2.1.7.1 <br />udpNoPorts 1.3.6.1.2.1.7.2 <br />udpInErrors 1.3.6.1.2.1.7.3 <br />udpOutDatagrams 1.3.6.1.2.1.7.4 <br />udpTable&nbsp; 1.3.6.1.2.1.7.5 <br />udpEntry 1.3.6.1.2.1.7.5.1 <br />udpLocalAddress 1.3.6.1.2.1.7.5.1.1 <br />udpLocalPort 1.3.6.1.2.1.7.5.1.2 <br />SNMP Group&nbsp; <br />snmpInPkts 1.3.6.1.2.1.11.1 <br />snmpOutPkts 1.3.6.1.2.1.11.2 <br />snmpInBadVersions 1.3.6.1.2.1.11.3 <br />snmpInBadCommunityNames 1.3.6.1.2.1.11.4 <br />snmpInBadCommunityUses 1.3.6.1.2.1.11.5 <br />snmpInASNParseErrs 1.3.6.1.2.1.11.6 <br />NOT USED 1.3.6.1.2.1.11.7 <br />snmpInTooBigs 1.3.6.1.2.1.11.8 <br />snmpInNoSuchNames 1.3.6.1.2.1.11.9 <br />snmpInBadValues 1.3.6.1.2.1.11.10 <br />snmpInReadOnlys 1.3.6.1.2.1.11.11 <br />snmpInGenErrs 1.3.6.1.2.1.11.12 <br />snmpInTotalReqVars 1.3.6.1.2.1.11.13 <br />snmpInTotalSetVars 1.3.6.1.2.1.11.14 <br />snmpInGetRequests 1.3.6.1.2.1.11.15 <br />snmpInGetNexts 1.3.6.1.2.1.11.16 <br />snmpInSetRequests 1.3.6.1.2.1.11.17 <br />snmpInGetResponses 1.3.6.1.2.1.11.18 <br />snmpInTraps 1.3.6.1.2.1.11.19 <br />snmpOutTooBigs 1.3.6.1.2.1.11.20 <br />snmpOutNoSuchNames 1.3.6.1.2.1.11.21 <br />snmpOutBadValues 1.3.6.1.2.1.11.22 <br />NOT USED 1.3.6.1.2.1.11.23 <br />snmpOutGenErrs 1.3.6.1.2.1.11.24 <br />snmpOutGetRequests 1.3.6.1.2.1.11.25 <br />snmpOutGetNexts 1.3.6.1.2.1.11.26 <br />snmpOutSetRequests 1.3.6.1.2.1.11.27 <br />snmpOutGetResponses 1.3.6.1.2.1.11.28 <br />snmpOutTraps 1.3.6.1.2.1.11.29 <br />snmpEnableAuthenTraps 1.3.6.1.2.1.11.30 <br /><br />http://www.ietf.org/
          <br/><br/>
          <span style="color:red;">
            <a href="http://papa.javaeye.com/blog/221419#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">辉煌盛会-微软WinHec 2008 邀您共赴卓越</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <img src ="http://www.blogjava.net/ecsun/aggbug/229149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ecsun/" target="_blank">海鹏</a> 2008-09-16 14:18 <a href="http://www.blogjava.net/ecsun/archive/2008/09/16/229149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>