??xml version="1.0" encoding="utf-8" standalone="yes"?>在线观看免费亚洲,亚洲精品无码专区久久久,韩国亚洲伊人久久综合影院http://www.tkk7.com/ecsun/zh-cnFri, 09 May 2025 22:14:49 GMTFri, 09 May 2025 22:14:49 GMT60跨越LVS,监控后端应用服务?-监控pȝ开发\?/title><link>http://www.tkk7.com/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.tkk7.com/ecsun/archive/2008/12/11/245627.html</guid><wfw:comment>http://www.tkk7.com/ecsun/comments/245627.html</wfw:comment><comments>http://www.tkk7.com/ecsun/archive/2008/12/11/245627.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/ecsun/comments/commentRss/245627.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ecsun/services/trackbacks/245627.html</trackback:ping><description><![CDATA[<p>公司有几癑֏服务?很多服务器用了LVS,同一个应用会部v在很多不同的服务器上,然后在上层加LVS,q个时?当后C台或几台服务服务器宕掉了,前端应用是正常的,通过对URL的监?不能发现问题.</p> <p> </p> <p>  上周末托在深圳电信的机?有一个机?台服务器同时断掉,l过查找,最后是外网交换机出C问题.但这个时候前端应用是正常?而监?没有发出报警信息,昨天在监控上面加上新功能,I过LVS,直接到后端服务器q行监控.</p> <p> </p> <p>   q个服务器的监控,分ؓ两种.</p> <p>  1:通过SNMPҎ务器q行监控.</p> <p>  2:通过对应用的URLҎ务器q行监控.</p> <p> </p> <p>  SNMP主要监控服务器的q行状?</p> <p>  URL监控,主要监控应用的实时运行状?</p> <p> </p> <p>  费话说,对应用加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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> Long getResponseTimeByIp(String urlAddress, String ip) </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_69_2084_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        URL url;   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        StringBuffer sb </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> StringBuffer(</span><span style="color: #000000">""</span><span style="color: #000000">);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        HttpURLConnection conn </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">;   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        Long responseTime </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Long(</span><span style="color: #000000">0</span><span style="color: #000000">);   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">try</span><span style="color: #000000"> </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_243_1570_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            Long openTime </span><span style="color: #000000">=</span><span style="color: #000000"> System.currentTimeMillis();   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #008000">//</span><span style="color: #008000"> url = new URL("</span><span style="color: #008000; text-decoration: underline">http://m.easou.com/</span><span style="color: #008000">");   </span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">            url </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> URL(urlAddress);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            Proxy proxy </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Proxy(Proxy.Type.HTTP, </span><span style="color: #0000ff">new</span><span style="color: #000000"> InetSocketAddress(buildInetAddress(ip), </span><span style="color: #000000">80</span><span style="color: #000000">));   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            conn </span><span style="color: #000000">=</span><span style="color: #000000"> (HttpURLConnection) url.openConnection(proxy);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            conn.setConnectTimeout(</span><span style="color: #000000">50000</span><span style="color: #000000">);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            conn.setReadTimeout(</span><span style="color: #000000">50000</span><span style="color: #000000">);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            conn.setRequestMethod(</span><span style="color: #000000">"</span><span style="color: #000000">GET</span><span style="color: #000000">"</span><span style="color: #000000">);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            conn.setDoOutput(</span><span style="color: #0000ff">true</span><span style="color: #000000">);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            conn.setDoInput(</span><span style="color: #0000ff">true</span><span style="color: #000000">);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            BufferedReader bReader </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BufferedReader(</span><span style="color: #0000ff">new</span><span style="color: #000000"> InputStreamReader(conn.getInputStream()));   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            String temp;   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">boolean</span><span style="color: #000000"> remaining </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">true</span><span style="color: #000000">;   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">while</span><span style="color: #000000"> (remaining) </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_996_1229_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                temp </span><span style="color: #000000">=</span><span style="color: #000000"> bReader.readLine();   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />                </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">!=</span><span style="color: #000000"> temp) </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1081_1142_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    sb.append(temp);   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />                }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1149_1212_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                    remaining </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">false</span><span style="color: #000000">;   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />                }</span></span><span style="color: #000000">   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />            }</span></span><span style="color: #000000">   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">int</span><span style="color: #000000"> code </span><span style="color: #000000">=</span><span style="color: #000000"> conn.getResponseCode();   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">if</span><span style="color: #000000"> (code </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">200</span><span style="color: #000000">) </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1313_1452_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                Long returnTime </span><span style="color: #000000">=</span><span style="color: #000000"> System.currentTimeMillis();   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                responseTime </span><span style="color: #000000">=</span><span style="color: #000000"> returnTime </span><span style="color: #000000">-</span><span style="color: #000000"> openTime;   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />            }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1459_1557_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                responseTime </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Long(</span><span style="color: #000000">"</span><span style="color: #000000">50000</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Long(code).toString());   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />            }</span></span><span style="color: #000000">   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (MalformedURLException e) </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1604_1755_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #008000">//</span><span style="color: #008000"> TODO Auto-generated catch block   </span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">            e.printStackTrace();   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            responseTime </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Long(</span><span style="color: #000000">"</span><span style="color: #000000">60000000</span><span style="color: #000000">"</span><span style="color: #000000">);   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (IOException e) </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1779_1930_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #008000">//</span><span style="color: #008000"> TODO Auto-generated catch block   </span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">            e.printStackTrace();   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            responseTime </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Long(</span><span style="color: #000000">"</span><span style="color: #000000">60000000</span><span style="color: #000000">"</span><span style="color: #000000">);   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">finally</span><span style="color: #000000"> </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1940_2043_Open_Text"><span style="color: #000000">{   <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.tkk7.com/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.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">!=</span><span style="color: #000000"> conn) </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.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1975_2030_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                conn.disconnect();   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />            }</span></span><span style="color: #000000">   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />        }</span></span><span style="color: #000000">   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> responseTime;   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000">  <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <br /> <p>使用q段代码,可以对于做了负载均衡的服务?q行URL的实时监控了.</p> <p> </p> <p>发送的报警信息,会探出目前哪台服务器的状况更差,更有针对?方便pȝl用户处理服务器异常.</p> <br /> <img src ="http://www.tkk7.com/ecsun/aggbug/245627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ecsun/" target="_blank">鹏</a> 2008-12-11 10:22 <a href="http://www.tkk7.com/ecsun/archive/2008/12/11/245627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从Ext到jQuery,?恨交?http://www.tkk7.com/ecsun/archive/2008/12/02/244018.htmlTue, 02 Dec 2008 13:22:00 GMThttp://www.tkk7.com/ecsun/archive/2008/12/02/244018.htmlhttp://www.tkk7.com/ecsun/comments/244018.htmlhttp://www.tkk7.com/ecsun/archive/2008/12/02/244018.html#Feedback10http://www.tkk7.com/ecsun/comments/commentRss/244018.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/244018.html 

   实是一个老话题了,很多同行已经讨论q个问题很多?

 

    一直关注我的朋友会记得,在Ext 正火的时?我推Z一个以Ext portal为基,整合struts,spirng,hibernate的开源项?很多朋友下蝲,配置,q行了这个项?q过各种方式ext的用进行了沟?

 

     怎么说呢?写完W一个不完整的FaceYe ext版本?我自己心里多多少有些无?虽然说FaceYe做成了可配置的类似portall构,但是使用ext做出的portletȝ正的portletq是有很大距ȝ.

 

    而最大问?我觉得不在这?我们知?Ext本n已经很臃肿了,使用Ext写东?很少会直接去写Html,作ؓ我来?大多工作是通过直接与js脚本来做?g正应了很多朋友热忠的one application one pae,实,FaceYe可以说在用户界面上做Cq一?同时面的布局可以随意改变,面上的模块可以随意d,比如从最初的RSS模块,到后来的围绕RSS的订阅等服务, 以ؓ博客{?都可以随意的ȝ?.q个q程,我所写的所有html代码,除了header里面加蝲q来的css/js?留下?几乎只有I空的body?

 

   一个朋友看了以???面上的东西怎么出来?

 

   可能很多朋友也会q么?随着我l向下开?功能来多,要加载的东西也越来越多的时?我设计了另外一个功?把所有要加蝲?js路径写入数据,当需要加载的时?再根据\径去加蝲指定的js,到后?我自q至都分不清哪一个js对应哪一个功能模块了.虽然js有说?有注?但有时候我真的要去select数据库了.虽说用大量jsp来完成类似的功能或许也会出现q样的问?但我觉得,混ؕ,在大量用js,使用return nullq样的action的时?使؜乱更加؜׃.

   使用Ext带ؓ的另外一个问?是页面是只留下空I如也的body?而这不是googleq样的搜索引擎喜Ƣ的,而我们用Ext做的站点,也很难被搜烦引擎收录,做seo,也不Ҏ.看到q一个朋友用Ext做的|站,从用Ext的角度来?真的是下了很大功?可seo,真的很艰?

 

   所以随着开发的不断深入,我发?不能l箋使用Extq行所有的开发了,臛_,不能大量使用Extq行互联|应用的开发了.

 

  ȝ原因

  1.Ext体积太大(没用GZIP过153K)

  2.大量使用Ext不利于网站做SEO.Ext的各Upanel,包括Tab,Grid,Win,Form{等,生成h很简?大多只需要几句代码就可以?可以不用一句html,可以生成出来一个漂亮的布局.虽然工作量少?面看上L亮了,可搜索引擎也发现不了|站?得不失.

  3.兼容.Ext虽然在兼Ҏ方面花了很大功?但在某些时?q是会偶展现出来一个意想不到的l果,令h渧笑皆非.

  4.调试.虽然我们有很多调试工具可以?但有时?真的不知道是哪里Z问题,新来开发的,更是一愁莫?

 

所以到了后?我开始寻扑֏外一U更为简单的式式来开发了.那就是jQuery.jQuery没有像Ext那里,提供一切你惌?个h觉得 ,jQuery更专注于化最基础的开发工?所以用v?也就感觉更像是用原始的jsq行开发一?而页面上的htmll构,跟没使用jQuery以前,没有太大差别?q对于网站开发来?我觉得是一件好事情.

 

 

从用Extq行FaceYe的开?到后来感觉到q,试用YUI,再到选择jQueryq行实际的工?一路走?感觉,真的是爱恨交?Ext化了很多工作,让开发更z?更方?但也带来了很多麻?l我们留下了更小的选择I间,YUI跟Ext,虽说不像Ext一?但用v?到处是Ext的媄?g像一个刚刚分手的恋h一?使用h,太多无奈.直到开始用jQuery,才感?又有了当初跨入IT行业的激?

 

    M一句话,如果你做WEB,别用Ext,如果你做大的目,或是压力较大的项?最好别全部使用Ext.如果你的目人员不稳?只是极少Ch懂Ext,别用Ext.



2008-12-02 21:22 发表评论
]]>
伊利Q蒙牛,三鹿对话Q放上来׃大伙http://www.tkk7.com/ecsun/articles/230277.htmlSun, 21 Sep 2008 09:25:00 GMThttp://www.tkk7.com/ecsun/articles/230277.htmlhttp://www.tkk7.com/ecsun/comments/230277.htmlhttp://www.tkk7.com/ecsun/articles/230277.html#Feedback0http://www.tkk7.com/ecsun/comments/commentRss/230277.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/230277.html       中国人在食品中完成了化学扫盲 
  从大c里我们认识了石?nbsp;
  从火腉K我们认识了敌敌畏 
  从咸鸭蛋、G椒酱里我们认识了苏丹U?nbsp;
  从火锅里我们认识了福马?nbsp;
  从银耟뀁蜜枣里我们认识了硫?nbsp;
  从木耳中认识了硫酔R 
  今天三鹿又让同胞知道了三聚氰胺的化学作用 

    外国人喝牛奶l实?nbsp;
    中国人喝牛奶l石?nbsp;
    日本人口P一天一杯牛奶振兴一个民?nbsp;
    中国人口P一天一杯牛Ӟ震惊一个民?nbsp;
  
    伊利Q蒙牛最惛_三鹿说什?nbsp;
    伊利Q你他妈加就加了Q不能少加点Q?nbsp;
    蒙牛Q我从来都是奶粉里加三聚氰胺Q你他妈三聚氰胺里加奶粉Q?nbsp;
    三鹿Q委屈)Q那几天漏斗坏了Q没他妈控制住量Q?br />

   q食品安全,看来真的是一大问题,大伙qx多注意了~大伙n体健店?/p>

2008-09-21 17:25 发表评论
]]>
立blogjava现在资源Q将blogjava的服务向U|拓展的思?/title><link>http://www.tkk7.com/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.tkk7.com/ecsun/archive/2008/09/19/230037.html</guid><wfw:comment>http://www.tkk7.com/ecsun/comments/230037.html</wfw:comment><comments>http://www.tkk7.com/ecsun/archive/2008/09/19/230037.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.tkk7.com/ecsun/comments/commentRss/230037.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ecsun/services/trackbacks/230037.html</trackback:ping><description><![CDATA[     摘要: <br/>1.blogjava资源的分c问?<br>2.立blogjava现有资源Q将blogjava的服务向深度和广度扩展?<br>3.blogjava需要一些可以聚焦h气的zd或氛?<br><a target="_blank">FaceYe淘客</a>|<a target="_blank">鹏JavaEye博客</a>| <br>  <a href='http://www.tkk7.com/ecsun/archive/2008/09/19/230037.html'>阅读全文</a><img src ="http://www.tkk7.com/ecsun/aggbug/230037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ecsun/" target="_blank">鹏</a> 2008-09-19 23:25 <a href="http://www.tkk7.com/ecsun/archive/2008/09/19/230037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>潮之巅:q后的英雄—风险投资(Venture CapitalQ?风投的v?/title><link>http://www.tkk7.com/ecsun/articles/229360.html</link><dc:creator>鹏</dc:creator><author>鹏</author><pubDate>Wed, 17 Sep 2008 02:42:00 GMT</pubDate><guid>http://www.tkk7.com/ecsun/articles/229360.html</guid><wfw:comment>http://www.tkk7.com/ecsun/comments/229360.html</wfw:comment><comments>http://www.tkk7.com/ecsun/articles/229360.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/ecsun/comments/commentRss/229360.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ecsun/services/trackbacks/229360.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.tkk7.com/ecsun/articles/229360.html'>阅读全文</a><img src ="http://www.tkk7.com/ecsun/aggbug/229360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ecsun/" target="_blank">鹏</a> 2008-09-17 10:42 <a href="http://www.tkk7.com/ecsun/articles/229360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>潮之巅-q后的英雄—风险投资(Venture CapitalQ?/title><link>http://www.tkk7.com/ecsun/articles/229357.html</link><dc:creator>鹏</dc:creator><author>鹏</author><pubDate>Wed, 17 Sep 2008 02:40:00 GMT</pubDate><guid>http://www.tkk7.com/ecsun/articles/229357.html</guid><wfw:comment>http://www.tkk7.com/ecsun/comments/229357.html</wfw:comment><comments>http://www.tkk7.com/ecsun/articles/229357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ecsun/comments/commentRss/229357.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ecsun/services/trackbacks/229357.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.tkk7.com/ecsun/articles/229357.html'>阅读全文</a><img src ="http://www.tkk7.com/ecsun/aggbug/229357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ecsun/" target="_blank">鹏</a> 2008-09-17 10:40 <a href="http://www.tkk7.com/ecsun/articles/229357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一字之差,偶与七飞行员没关~~http://www.tkk7.com/ecsun/archive/2008/09/16/229195.htmlTue, 16 Sep 2008 08:12:00 GMThttp://www.tkk7.com/ecsun/archive/2008/09/16/229195.htmlhttp://www.tkk7.com/ecsun/comments/229195.htmlhttp://www.tkk7.com/ecsun/archive/2008/09/16/229195.html#Feedback2http://www.tkk7.com/ecsun/comments/commentRss/229195.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/229195.html
没事Q明个新闻采访还会亲切的叫,鹏Q谈谈你在神七上的感受~~Q?br />
那也是跟偶在说话啦~

据公开资料Q这ơ会有飞行员Zq行太空行走的安排,同时Q飞行员q要释放卫星,q下可好了,能放出去Q就能收q来Q哪天咱一不高_发艘飞船上去Q把老美的曲球啊什么的Q全收进来,带回来给咱儿子当皮球玩~

那叫个爽~

不扯蛋了Q祝七成功Q祝飞行员安全?br />

2008-09-16 16:12 发表评论
]]>
SNMP风险及防?/title><link>http://www.tkk7.com/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.tkk7.com/ecsun/archive/2008/09/16/229156.html</guid><wfw:comment>http://www.tkk7.com/ecsun/comments/229156.html</wfw:comment><comments>http://www.tkk7.com/ecsun/archive/2008/09/16/229156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ecsun/comments/commentRss/229156.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ecsun/services/trackbacks/229156.html</trackback:ping><description><![CDATA[ <br/> 作? <a >ecsun</a>  链接Q?a style="color:red;">http://papa.javaeye.com/blog/220526</a>  发表旉: 2008q?7?8? <br/><br/> 声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任! <br/><br/> 接入Internet的网l面临许多风险,Web服务器可能面临攻击,邮g服务器的安全也o人担忧。但?此之外,|络上可能还存在一些隐性的漏洞。大多数|络L一些设备运行着SNMP服务Q许多时候这些SNMP服务是不必要的,但却没有引v|络理员的重视? <br /> <br />  ҎSANS协会Qhttp://www.sans.orgQ的报告Q对于接入Internet的主机,SNMP是威胁安全的十大首要因素之一Q同ӞSNMPq是InternetL上最常见的服务之一。特别地QSNMP服务通常在位于网l边~的讑֤Q防火墙保护圈之外的讑֤Q上q行Q进一步加剧了SNMP带来的风险。这一切听hZh意料Q但其实事情不应该是q样的。本文提供了一些徏议,帮助你正面对SNMP服务隐藏的风险? <br /> <br />  一、背景知? <br /> <br />  SNMP开发于九十q代早期Q其目的是简化大型网l中讑֤的管理和数据的获取。许多与|络有关的Y件包Q如HP的OpenView和Nortel Networks的Optivity Network Management SystemQ还有Multi Router Traffic GrapherQMRTGQ之cȝ免费软gQ都用SNMP服务来简化网l的理和维护? <br /> <br />  ׃SNMP的效果实在太好了Q所以网l硬件厂商开始把SNMP加入到它们制造的每一台设备。今天,各种|络讑֤上都可以看到默认启用的SNMP服务Q从交换机到路由器,从防火墙到网l打印机Q无一例外? <br /> <br />  仅仅是分布广泛还不以造成威胁Q问题是许多厂商安装的SNMP都采用了默认的通信字符Ԍ例如密码Q,q些通信字符串是E序获取讑֤信息和修攚w|必不可的。采用默认通信字符串的好处是网l上的Y件可以直接访问设备,无需l过复杂的配|? <br /> <br />  通信字符串主要包含两cd令:GET命oQSET命o。GET命o从设备读取数据,q些数据通常是操作参敎ͼ例如q接状态、接口名U等。SET命o允许讄讑֤的某些参敎ͼq类功能一般有限制Q例如关闭某个网l接口、修改\由器参数{功能。但很显ӞGET、SET命o都可能被用于拒绝服务dQDoSQ和恶意修改|络参数? <br /> <br />  最常见的默认通信字符串是publicQ只读)和privateQ读/写)Q除此之外还有许多厂商私有的默认通信字符丌Ӏ几乎所有运行SNMP的网l设备上Q都可以扑ֈ某种形式的默认通信字符丌Ӏ? <br /> <br />  SNMP 2.0和SNMP 1.0的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。攻击者一旦捕获了|络通信Q就可以利用各种嗅探工具直接获取通信字符Ԍ即用户改变了通信字符串的默认g无济于事? <br /> <br />  q几q才出现的SNMP 3.0解决了一部分问题。ؓ保护通信字符ԌSNMP 3.0使用DESQData Encryption StandardQ算法加密数据通信Q另外,SNMP 3.0q能够用MD5和SHAQSecure Hash AlgorithmQ技术验证节点的标识W,从而防止攻击者冒充管理节点的w䆾操作|络。有关SNMP 3.0的详l说明,请参见http://www.ietf.org/rfc/rfc2570.txt? <br /> <br />  虽然SNMP 3.0出现已经有一D|间了Q但目前q没有广泛应用。如果设备是2?q前的品,很可能根本不支持SNMP 3.0Q甚x些较新的讑֤也只有SNMP 2.0或SNMP 1.0? <br /> <br />  即讑֤已经支持SNMP 3.0Q许多厂商用的q是标准的通信字符Ԍq些字符串对黑客l织来说Ҏ不是U密。因此,虽然SNMP 3.0比以前的版本提供了更多的安全Ҏ,如果配置不当Q其实际效果仍旧有限? <br /> <br />  二、禁用SNMP <br /> <br />  要避免SNMP服务带来的安全风险,最d的办法是用SNMP。如果你没有用SNMP来管理网l,那就没有必要q行它;如果你不清楚是否有必要运行SNMPQ很可能实际上不需要。即使你打算以后使用SNMPQ只要现在没有用Q也应该先禁用SNMPQ直到确实需要用SNMP时才启用它? <br /> <br />  下面列出了如何在常见的^C用SNMP服务? <br /> <br />  ?Windows XP和Windows 2000 <br /> <br />  在XP和Win 2K中,叛_“我的电脑”,选择“管理”。展开“服务和应用E序”、“服务”,从服务的清单中选择SNMP服务Q停止该服务。然后打开服务的“属性”对话框Q将启动cd该ؓ“禁用”(按照微Y的默认设|,Win 2K/XP默认不安装SNMP服务Q但许多软g会自动安装该服务Q? <br /> <br />  ?Windows NT 4.0 <br /> <br />  选择“开始”→“设|”,打开服务讄E序Q在服务清单中选择SNMP服务Q停止该服务Q然后将它的启动cd该ؓ用? <br /> <br />  ?Windows 9x <br /> <br />  打开控制面板的网l设|程序,在“配|”页中,从已安装的组件清单中选择“Microsoft SNMP代理”,点击“删除”。检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices和HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\CurrentVersion\Run注册键,认不存在snmp.exe? <br /> <br />  ?Cisco Systemsg <br /> <br />  对于Cisco的网l硬Ӟ执行“no SNMP-server”命令禁用SNMP服务。如果要查SNMP是否关闭Q可执行“show SNMP”命令。这些命令只适用于运行Cisco IOS的^収ͼ对于非IOS的Cisco讑֤Q请参考随机文档? <br /> <br />  ?HPg <br /> <br />  对于所有用JetDirect卡(l大部分HP|络打印机都使用它)的HP|络讑֤Q用telnetq接到JetDirect卡的IP地址Q然后执行下面的命oQ? <br /> <br />SNMP-config: 0 <br />quit <br /> <br /> <br />  q些命o关闭设备的SNMP服务。但必须注意的是Q禁用SNMP服务会媄响服务的发现操作以及利用SNMP获取讑֤状态的端口监视机制? <br /> <br />  ?Red Hat Linux <br /> <br />  对于Red Hat LinuxQ可以用Linuxconf工具从自动启动的服务清单中删除SNMPQ或者直接从/etc/services文g删除启动SNMP的行。对于其他LinuxpȝQ操作方法应该也怼?<br /> <br />  三、保障SNMP的安? <br /> <br />  如果某些讑֤实有必要运行SNMPQ则必须保障q些讑֤的安全。首先要做的是确定哪些设备正在运行SNMP服务。除非定期对整个|络q行端口扫描Q全面掌握各台机器、设备上q行的服务,否则的话Q很有可能遗漏一、二个SNMP服务。特别需要注意的是,|络交换机、打印机之类的设备同样也会运行SNMP服务。确定SNMP服务的运行情况后Q再采取下面的措施保障服务安全? <br /> <br />  ?加蝲SNMP服务的补? <br /> <br />  安装SNMP服务的补丁,SNMP服务升?.0或更高的版本。联p设备的刉商Q了解有兛_全漏z和升补丁的情c? <br /> <br />  ?保护SNMP通信字符? <br /> <br />  一个很重要的保护措施是修改所有默认的通信字符丌Ӏ根据设备文档的说明Q逐一查、修改各个标准的、非标准的通信字符Ԍ不要遗漏M一,必要时可以联pd造商获取详细的说明? <br /> <br />  ?qoSNMP <br /> <br />  另一个可以采用的保护措施是在|络边界上过滤SNMP通信和请求,卛_防火墙或边界路由器上Q阻塞SNMPh使用的端口。标准的SNMP服务使用161?62端口Q厂商私有的实现一般?99?91?05?993端口。禁用这些端口通信后,外部|络讉K内部|络的能力就受到了限Ӟ另外Q在内部|络的\由器上,应该~写一个ACLQ只允许某个特定的可信Q的SNMP理pȝ操作SNMP。例如,下面的ACL只允许来自(或者走向)SNMP理pȝ的SNMP通信Q限制网l上的所有其他SNMP通信Q? <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 />  q个ACL的第一行定义了可信ȝ理系l(w.x.yQ。利用下面的命o可以上qACL应用到所有网l接口: <br /> <br />interface serial 0 <br />ip access-group 100 in <br /> <br /> <br />  MQSNMP的发明代表着|络理的一大进步,现在它仍是高效管理大型网l的有力工具。然而,SNMP的早期版本天生缺乏安全性,即最新的版本同样也存在问题。就象网l上q行的其他服务一PSNMP服务的安全性也是不可忽视的。不要盲目地肯定|络上没有运行SNMP服务Q也许它p藏在某个讑֤上。那些必不可的|络服务已经有太多让人担忧的安全问题Q所以最好关闭SNMP之类q必需的服务——至尽量设法保障其安全? <br/><br/> <span style="color:red;"> <a style="color:red;">已有 <strong>0</strong> 人发表留aQ猛?>><strong>q里</strong><<-参与讨论</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;">辉煌盛会-微YWinHec 2008 邀您共赴卓?/span></a></li></ul> <br/><br/><br/> <img src ="http://www.tkk7.com/ecsun/aggbug/229156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ecsun/" target="_blank">鹏</a> 2008-09-16 14:18 <a href="http://www.tkk7.com/ecsun/archive/2008/09/16/229156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在不同操作系l中安装SNMPhttp://www.tkk7.com/ecsun/archive/2008/09/16/229155.htmlTue, 16 Sep 2008 06:18:00 GMThttp://www.tkk7.com/ecsun/archive/2008/09/16/229155.htmlhttp://www.tkk7.com/ecsun/comments/229155.htmlhttp://www.tkk7.com/ecsun/archive/2008/09/16/229155.html#Feedback0http://www.tkk7.com/ecsun/comments/commentRss/229155.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/229155.html 作? ecsun  链接Q?a style="color:red;">http://papa.javaeye.com/blog/220527  发表旉: 2008q?7?8?

声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!

在Windowspȝ中安装SNMP代理
在Windows XP/2000/2003上安装SNMP代理
在Windows NT上安装SNMP代理
在Linux上安装SNMP代理
在Solaris上安装SNMP代理

----------------------------------------------------------------------------------------------------------------------------------------------
在计机上安装简单网l管理协?SNMP)服务之前Q您最好了解以下信息:

|络中的共同体名U?

每个共同体的陷阱目标?

SNMP理L的IP地址和计机名称?

----------------------------------------------------------------------------------------------------------------------------------------------
在Windows XP/2000/2003上安装SNMP代理

在Windows XP, 2000?003上安装SNMPQ按照下面的步骤Q?

您必MZ名管理员或管理员组中的成员dQ来完成q些步骤。如果您的计机q接C个网l上Q网l条规设|可能会L您完成这些步骤?

点击开始,指向讄Q点L刉? 双击d或删除程? 然后点击d/删除Windowslg?

点击理和监视工?但不要选择或清除其复选框), 然后点击详细信息?

选择单网l管理协议复选框Qƈ点击定?

点击下一步?

h入相应的CD 或指定文件存储位|的完整路径Q然后点ȝl?

SNMP会在安装后自动启动?

q样完成安装过E。如何配|SNMP代理使之应答SNMPhQ可参见配置SNMP代理?

----------------------------------------------------------------------------------------------------------------------------------------------
在Windows NT安装SNMP代理

在Windows NT上安装SNMPQ按照下面的步骤Q?

右键点击桌面上的|上d图标?

点击属性?

点击服务?

点击dQ将出现选择|络服务对话框?

在网l服务列表中点击SNMP服务Q然后点ȝ定?

插入相应的CD 或指定文件存储位|的完整路径Q然后点ȝl?

在您的计机上复制必要的文g后,出现Microsoft SNMP属性对话框?

q样完成安装过E。如何配|SNMP代理使之应答SNMPhQ可参配|SNMP代理?

----------------------------------------------------------------------------------------------------------------------------------------------
在Linux上面pȝ安装SNMP代理

仅有8.0以前的Linux版本才需要安装SNMP的新版本?

使用以下URL可以下蝲最新的SNMP rpm版本Q?

http://prdownloads.sourceforge.net/net-snmp/net-snmp-5.1.1-1.rh9.i686.rpm?download

使用以下URL可以下蝲最新的SNMP zip版本:

http://heanet.dl.sourceforge.net/sourceforge/net-snmp/ucd-snmp-4.2.6.tar.gz

安装rpm版本的步骤如下:

?root"d?

安装最新版的net-snmp之前Q需要卸载机器上的旧的net-snmp。要列出机器上已l安装的 net-snmp的版本,可用以下命?

rpm -qa | grep "net-snmp"

如果机器上已l安装了旧版本,可用以下命令卸?

rpm -e <使用上述命o列出的net-snmp的版本号> --nodeps

如果机器上没有安装先前的版本Q则使用以下命o安装新版本:

rpm -i <C载的SNMP代理> --nodeps

安装zip版本的步骤如?

使用以下命o解冻文gQ?

tar -zxvf ucd-snmp-4.2.6.tar.gz

安装SNMP的步骤如下:

用root用户d?

执行以下命o来设|C~译器的路径Q?
export PATH=<gcc path>:$PATH

从提取ucd-snmp的目录中执行以下四项命oQ?

./configure --prefix=<directory_name> --with-mib-modules="host"

directory_name 是安装SNMP代理的目录?最好选择一?root下的目录。目?usr?local可能包含SNMP旧版本的文gQ所以不要选择q些目录以确保正安装?

make

umask 022

make install

q样完成安装过E。如何配|SNMP代理使之应答SNMPhQ可参见配置SNMP代理?

----------------------------------------------------------------------------------------------------------------------------------------------
在Solarispȝ中安装SNMP代理

请用以下URL来下载SNMP的最新版本:

http://heanet.dl.sourceforge.net/sourceforge/net-snmp/ucd-snmp-4.2.6.tar.gz

使用以下命o解压文gQ?

tar -zxvf ucd-snmp-4.2.6.tar.gz

安装SNMP的操作步骤如下:

用root用户d?

执行以下命o来设|C~译器的路径Q?
export PATH=<gcc path>:$PATH

从提取ucd-snmp的目录中执行以下四项命oQ?

./configure --prefix=<directory_name> --with-mib-modules="host"

directory_name 是安装 SNMP 代理的目录?最好选择安装在根目录/root下。目?usr?local 可能包含SNMP旧版本的文gQ所以不要选择q些目录以确保正安装?

make

umask 022

make install

注意Q?要安装Solaris 8Q参照下面的步骤Q?

netsnmp-5.1.1包在下面的url有效 ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/netsnmp-5.1.1-sol8-sparc-local.gz. q个包是专门用于solaris8?

gunzip etsnmp-5.1.1-sol8-sparc-local.gz.

pkgadd -d netsnmp-5.1.1-sol8-sparc-local.

包就被安装成功。这个包可以通过" ./configure --with-mib-modules=host "配置Q代理将支持host -resource-mib?

启动netsnmp代理Q执?- # /usr/local/sbin/snmpd.

停止q个q程Q执?- # pkill -9 -x -u 0 snmpd.

q样完成了安装q程。配|SNMP代理使其相应SNMPQ请参考配|SNMP代理?

已有 0 人发表留aQ猛?>>q里<<-参与讨论


JavaEye推荐





2008-09-16 14:18 发表评论
]]>
java取得Linuxcpu,内存,盘实时信息http://www.tkk7.com/ecsun/archive/2008/09/16/229154.htmlTue, 16 Sep 2008 06:18:00 GMThttp://www.tkk7.com/ecsun/archive/2008/09/16/229154.htmlhttp://www.tkk7.com/ecsun/comments/229154.htmlhttp://www.tkk7.com/ecsun/archive/2008/09/16/229154.html#Feedback0http://www.tkk7.com/ecsun/comments/commentRss/229154.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/229154.html 作? ecsun  链接Q?a style="color:red;">http://papa.javaeye.com/blog/220532  发表旉: 2008q?7?8?

声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!

Java代码
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.StringTokenizer;  
 
/** 


* 取得linuxpȝ下的cpu、内存信?nbsp;
*  
* */ 
public final class LinuxSystemTool  
{  
   /** 
   * get memory by used info 
   *  
   * @return int[] result 
   * result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree; 
   * @throws IOException 
   * @throws InterruptedException 
   */ 
   public static int[] getMemInfo() throws IOException, InterruptedException  
   {  
      File file = new File("/proc/meminfo");  
      BufferedReader br = new BufferedReader(new InputStreamReader(  
      new FileInputStream(file)));  
      int[] result = new int[4];  
      String str = null;  
      StringTokenizer token = null;  
      while((str = br.readLine()) != null)  
      {  
         token = new StringTokenizer(str);  
         if(!token.hasMoreTokens())  
            continue;  
     
         str = token.nextToken();  
         if(!token.hasMoreTokens())  
            continue;  
     
         if(str.equalsIgnoreCase("MemTotal:"))  
            result[0] = Integer.parseInt(token.nextToken());  
         else if(str.equalsIgnoreCase("MemFree:"))  
            result[1] = Integer.parseInt(token.nextToken());  
         else if(str.equalsIgnoreCase("SwapTotal:"))  
            result[2] = Integer.parseInt(token.nextToken());  
         else if(str.equalsIgnoreCase("SwapFree:"))  
            result[3] = Integer.parseInt(token.nextToken());  
      }  
     
      return result;  
   }  
 
   /** 
   * get memory by used info 
   *  
   * @return float efficiency 
   * @throws IOException 
   * @throws InterruptedException 
   */ 
   public static float getCpuInfo() throws IOException, InterruptedException  
   {  
      File file = new File("/proc/stat");  
      BufferedReader br = new BufferedReader(new InputStreamReader(  
      new FileInputStream(file)));  
      StringTokenizer token = new StringTokenizer(br.readLine());  
      token.nextToken();  
      int user1 = Integer.parseInt(token.nextToken());  
      int nice1 = Integer.parseInt(token.nextToken());  
      int sys1 = Integer.parseInt(token.nextToken());  
      int idle1 = Integer.parseInt(token.nextToken());  
     
      Thread.sleep(1000);  
 
      br = new BufferedReader(  
      new InputStreamReader(new FileInputStream(file)));  
      token = new StringTokenizer(br.readLine());  
      token.nextToken();  
      int user2 = Integer.parseInt(token.nextToken());  
      int nice2 = Integer.parseInt(token.nextToken());  
      int sys2 = Integer.parseInt(token.nextToken());  
      int idle2 = Integer.parseInt(token.nextToken());  
 
      return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));  
   }  
}  
 
/** 
* 试c?nbsp;
*  
* <p>@author javer QQ:84831612</p> 
* @date 2005 
*/ 
public class JaverTest  
{  
    public static void main(String[] args) throws Exception  
    {  
        int[] memInfo = LinuxSystemTool.getMemInfo();  
        System.out.println("MemTotalQ? + memInfo[0]);  
        System.out.println("MemFreeQ? + memInfo[1]);  
        System.out.println("SwapTotalQ? + memInfo[2]);  
        System.out.println("SwapFreeQ? + memInfo[3]);  
 
        System.out.println("CPU利用率:" + LinuxSystemTool.getCpuInfo());  
    }  


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

/**


* 取得linuxpȝ下的cpu、内存信?
*
* */
public final class LinuxSystemTool
{
   /**
   * get memory by used info
   *
   * @return int[] result
   * result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree;
   * @throws IOException
   * @throws InterruptedException
   */
   public static int[] getMemInfo() throws IOException, InterruptedException
   {
      File file = new File("/proc/meminfo");
      BufferedReader br = new BufferedReader(new InputStreamReader(
      new FileInputStream(file)));
      int[] result = new int[4];
      String str = null;
      StringTokenizer token = null;
      while((str = br.readLine()) != null)
      {
         token = new StringTokenizer(str);
         if(!token.hasMoreTokens())
            continue;
  
         str = token.nextToken();
         if(!token.hasMoreTokens())
            continue;
  
         if(str.equalsIgnoreCase("MemTotal:"))
            result[0] = Integer.parseInt(token.nextToken());
         else if(str.equalsIgnoreCase("MemFree:"))
            result[1] = Integer.parseInt(token.nextToken());
         else if(str.equalsIgnoreCase("SwapTotal:"))
            result[2] = Integer.parseInt(token.nextToken());
         else if(str.equalsIgnoreCase("SwapFree:"))
            result[3] = Integer.parseInt(token.nextToken());
      }
  
      return result;
   }

   /**
   * get memory by used info
   *
   * @return float efficiency
   * @throws IOException
   * @throws InterruptedException
   */
   public static float getCpuInfo() throws IOException, InterruptedException
   {
      File file = new File("/proc/stat");
      BufferedReader br = new BufferedReader(new InputStreamReader(
      new FileInputStream(file)));
      StringTokenizer token = new StringTokenizer(br.readLine());
      token.nextToken();
      int user1 = Integer.parseInt(token.nextToken());
      int nice1 = Integer.parseInt(token.nextToken());
      int sys1 = Integer.parseInt(token.nextToken());
      int idle1 = Integer.parseInt(token.nextToken());
  
      Thread.sleep(1000);

      br = new BufferedReader(
      new InputStreamReader(new FileInputStream(file)));
      token = new StringTokenizer(br.readLine());
      token.nextToken();
      int user2 = Integer.parseInt(token.nextToken());
      int nice2 = Integer.parseInt(token.nextToken());
      int sys2 = Integer.parseInt(token.nextToken());
      int idle2 = Integer.parseInt(token.nextToken());

      return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
   }
}

/**
* 试c?
*
* <p>@author javer QQ:84831612</p>
* @date 2005
*/
public class JaverTest
{
    public static void main(String[] args) throws Exception
    {
        int[] memInfo = LinuxSystemTool.getMemInfo();
        System.out.println("MemTotalQ? + memInfo[0]);
        System.out.println("MemFreeQ? + memInfo[1]);
        System.out.println("SwapTotalQ? + memInfo[2]);
        System.out.println("SwapFreeQ? + memInfo[3]);

        System.out.println("CPU利用率:" + LinuxSystemTool.getCpuInfo());
    }
} Qhttp://people.ee.ethz.ch/~oetiker/webtools/mrtg/Q就是一个很不错的选择。不q用mrtgp装sysstat、apache、snmp、perl之类的东ѝ而且安装也要好几个步骤,g比较ȝ。本来也想直接调用sar、vmstat之类的命令,parse一下结果就了。哪知道发现不同的版本的linuxq些命o的结果也都是不一栗既然要按版?parse它们的结果,那还不如直接ȝl里面获得算了。于是研I了一下sysstatQhttp://freshmeat.net/projects/sysstat/Q和gkrellmQhttp://gkrellm.net Q的源代码,扑ֈ监测性能的数据所在?



1、CPU



在文?/proc/stat"里面包含了CPU的信息。每一个CPU的每一tick用在什么地斚w在这个文仉面记着。后面的数字含义分别是: user、nice、sys、idle、iowait。有些版本的kernel没有iowaitq一V这些数DCZ开机到现在QCPU的每tick用在了哪里。例如:

cpu0 256279030 0 11832528 1637168262

是cpu0从开机到现在?256279030 tick用在了user消耗,11832528用在了sys消耗。所以如果想计算单位旉Q例?sQ里面CPU的负载,那只需要计?U前后数值的差除以每一U的tick数量可以了。gkrellm是q样实现的:((200 * (v2 - v1) / CPU_TICKS_PER_SECOND) + 1) /2

例如Q第一ơ读?proc/statQuser的值是256279030Q一U以后再Mơ,值是256289030Q那么CPU在这一U的user消耗就是:((200 * (256289030 - 256279030) / CPU_TICKS_PER_SECOND) + 1) /2 = ((10000 * 200 / 1000000) + 1) / 2 = 1%了?



2、内存消?



文g"/proc/meminfo"里面包含的就是内存的信息Q还包括了swap的信息。例如:





$ cat /proc/meminfo

total:    used:    free:  shared: buffers:  cached:
Mem:  1057009664 851668992 205340672        0 67616768 367820800
Swap: 2146787328 164429824 1982357504
MemTotal:      1032236 kB
MemFree:        200528 kB
MemShared:           0 kB
…?

不过从gkrellm的源代码看,有些版本没有前面那两行统计的信息Q只能够Ҏ下面的Key: Valueq种各式的数据收集?



3、磁盘空?



从gkrellm的源代码看,q个是一个很复杂的数据。磁盘分区的数据有可能分布在Q?proc/mounts?proc/diskstats?/proc/partitions{等。而且如果惌查某几个特定的\径,q需要通过mount、df{命令的帮助。ؓ了减麻烦,q个数据我就直接?statfs函数直接获得了?



int statfs(const char *path, struct statfs *buf);

q个函数只需要输入需要检查的路径名称Q就可以q回q个路径所在的分区的空间用情况:

ȝ_buf.f_bsize * buf.f_blocks

IZI间Qbuf.f_bsize * buf.f_bavail



4、磁盘I/O



盘I/O的数据也同样比较复杂Q有些版本看/proc/diskstatsQ有些版本看/proc/partitionsQ还有些版本至今我也不知道在那里看……不q可以看到数据的版本也像CPU那样Q需要隔一D|间取|两次取值的差就是流量?



5、网l流?



|络量也是五花八门Q不q基本上都可以在/proc/net/dev里面获得。同样也是需要两ơ取值取其差作ؓ量倹{?

Linux联盟攉整理 ,转脓h明原始链?如有M疑问Ƣ迎来本站Linux论坛讨论

已有 3 人发表留aQ猛?>>q里<<-参与讨论


JavaEye推荐





2008-09-16 14:18 发表评论
]]>
SNMP4jCZhttp://www.tkk7.com/ecsun/archive/2008/09/16/229153.htmlTue, 16 Sep 2008 06:18:00 GMThttp://www.tkk7.com/ecsun/archive/2008/09/16/229153.htmlhttp://www.tkk7.com/ecsun/comments/229153.htmlhttp://www.tkk7.com/ecsun/archive/2008/09/16/229153.html#Feedback0http://www.tkk7.com/ecsun/comments/commentRss/229153.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/229153.html 作? ecsun  链接Q?a style="color:red;">http://papa.javaeye.com/blog/220534  发表旉: 2008q?7?8?

声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!

Java代码
#mib.properties  
#Fri Jul 11 15:57:28 CST 2008 
1.3.6.1.2.1.1.6.0=beijing  
1.3.6.1.2.1.1.8.0=test  
1.3.6.1.2.1.1.5.0=admin  
1.3.6.1.2.1.1.7.0=8899 

#mib.properties
#Fri Jul 11 15:57:28 CST 2008
1.3.6.1.2.1.1.6.0=beijing
1.3.6.1.2.1.1.8.0=test
1.3.6.1.2.1.1.5.0=admin
1.3.6.1.2.1.1.7.0=8899 mib搞的两天不是很明白,于是自己定义了个配置文g来充当mib库,mib.properties



下面的例子是服务器端Q也是managerQ?



Java代码
import java.io.IOException;  
 
import java.util.Vector;  
 
import org.snmp4j.CommunityTarget;  
 
import org.snmp4j.PDU;  
 
import org.snmp4j.Snmp;  
 
import org.snmp4j.TransportMapping;  
 
import org.snmp4j.event.ResponseEvent;  
 
import org.snmp4j.mp.SnmpConstants;  
 
import org.snmp4j.smi.Address;  
 
import org.snmp4j.smi.GenericAddress;  
 
import org.snmp4j.smi.OID;  
 
import org.snmp4j.smi.OctetString;  
 
import org.snmp4j.smi.VariableBinding;  
 
import org.snmp4j.transport.DefaultUdpTransportMapping;  
 
public class SnmpUtil {  
    private Snmp snmp = null;  
    private Address targetAddress = null;  
 
    public void initComm() throws IOException {  
        // 讄Agent方的IP和端?nbsp; 
        targetAddress = GenericAddress.parse("udp:192.168.10.191/161");  
        TransportMapping transport = new DefaultUdpTransportMapping();  
        snmp = new Snmp(transport);  
        transport.listen();  
    }  
 
    public ResponseEvent sendPDU(PDU pdu) throws IOException {  
        // 讄 target  
        CommunityTarget target = new CommunityTarget();  
        target.setCommunity(new OctetString("public"));  
        target.setAddress(targetAddress);  
        // 通信不成功时的重试次?nbsp; 
        target.setRetries(2);  
        // 时旉  
        target.setTimeout(1500);  
        target.setVersion(SnmpConstants.version1);  
        // 向Agent发送PDUQƈq回Response  
        return snmp.send(pdu, target);  
    }  
 
    public void setPDU() throws IOException {  
        // set PDU  
        PDU pdu = new PDU();  
        pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 7,  
                0 }), new OctetString("8899")));  
        pdu.setType(PDU.SET);  
        sendPDU(pdu);  
    }  
    public void getPDU() throws IOException {  
        // get PDU  
        PDU pdu = new PDU();  
        pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 6,  
                0 })));// pcName  
        pdu.setType(PDU.GET);  
        readResponse(sendPDU(pdu));  
    }  
 
    public void readResponse(ResponseEvent respEvnt) {  
        // 解析Response  
        System.out.println("----------解析Response-------------");  
        if (respEvnt != null && respEvnt.getResponse() != null) {  
            Vector<VariableBinding> recVBs = respEvnt.getResponse()  
            .getVariableBindings();  
            for (int i = 0; i < recVBs.size(); i++) {  
                VariableBinding recVB = recVBs.elementAt(i);  
                System.out  
                        .println(recVB.getOid() + " : " + recVB.getVariable());  
            }  
        }  
 
    }  
 
    public static void main(String[] args) {  
        System.out.println("----------start-------------");  
        try {  
            SnmpUtil util = new SnmpUtil();  
            util.initComm();  
             util.setPDU();  
            util.getPDU();  
        } catch (IOException e) {  
 
            e.printStackTrace();  
 
        }  
 
    }  
 


import java.io.IOException;

import java.util.Vector;

import org.snmp4j.CommunityTarget;

import org.snmp4j.PDU;

import org.snmp4j.Snmp;

import org.snmp4j.TransportMapping;

import org.snmp4j.event.ResponseEvent;

import org.snmp4j.mp.SnmpConstants;

import org.snmp4j.smi.Address;

import org.snmp4j.smi.GenericAddress;

import org.snmp4j.smi.OID;

import org.snmp4j.smi.OctetString;

import org.snmp4j.smi.VariableBinding;

import org.snmp4j.transport.DefaultUdpTransportMapping;

public class SnmpUtil {
private Snmp snmp = null;
private Address targetAddress = null;

public void initComm() throws IOException {
// 讄Agent方的IP和端?
targetAddress = GenericAddress.parse("udp:192.168.10.191/161");
TransportMapping transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();
}

public ResponseEvent sendPDU(PDU pdu) throws IOException {
// 讄 target
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
// 通信不成功时的重试次?
target.setRetries(2);
// 时旉
target.setTimeout(1500);
target.setVersion(SnmpConstants.version1);
// 向Agent发送PDUQƈq回Response
return snmp.send(pdu, target);
}

public void setPDU() throws IOException {
// set PDU
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 7,
0 }), new OctetString("8899")));
pdu.setType(PDU.SET);
sendPDU(pdu);
}
public void getPDU() throws IOException {
// get PDU
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 6,
0 })));// pcName
pdu.setType(PDU.GET);
readResponse(sendPDU(pdu));
}

public void readResponse(ResponseEvent respEvnt) {
// 解析Response
System.out.println("----------解析Response-------------");
if (respEvnt != null && respEvnt.getResponse() != null) {
Vector<VariableBinding> recVBs = respEvnt.getResponse()
.getVariableBindings();
for (int i = 0; i < recVBs.size(); i++) {
VariableBinding recVB = recVBs.elementAt(i);
System.out
.println(recVB.getOid() + " : " + recVB.getVariable());
}
}

}

public static void main(String[] args) {
System.out.println("----------start-------------");
try {
SnmpUtil util = new SnmpUtil();
util.initComm();
util.setPDU();
util.getPDU();
} catch (IOException e) {

e.printStackTrace();

}

}

}

agent代理端代码:



Java代码
import java.util.*;  
/** 
* agent代理端 
* leo 
* 20080710 
*/ 
import org.snmp4j.*;  
import org.snmp4j.smi.*;  
 
import snmputil.Config;  
 
public class OTAAgent {  
 
    public static class Handler implements org.snmp4j.CommandResponder {  
        protected java.lang.String mAddress = null;  
        protected int mPort = 0;  
        protected java.lang.String mMyCommunityName = null;  
        protected org.snmp4j.TransportMapping mServerSocket = null;  
        protected org.snmp4j.Snmp mSNMP = null;  
 
        public Handler() {  
        }  
 
        public void configure() {  
            mAddress = "192.168.10.191";  
            mPort = 161;  
            mMyCommunityName = "OAagent";  
        }  
 
        public void start() {  
            try {  
                mServerSocket = new org.snmp4j.transport.DefaultUdpTransportMapping(  
                        new org.snmp4j.smi.UdpAddress(java.net.InetAddress  
                                .getByName(mAddress), mPort));  
                mSNMP = new org.snmp4j.Snmp(mServerSocket);  
                mSNMP.addCommandResponder(this);  
                mServerSocket.listen();  
            } catch (java.net.UnknownHostException vException) {  
                System.out.println(vException);  
            } catch (java.io.IOException vException) {  
                System.out.println(vException);  
            }  
        }  
 
        public synchronized void processPdu(  
                org.snmp4j.CommandResponderEvent aEvent) {  
            java.lang.String vCommunityName = new java.lang.String(aEvent  
                    .getSecurityName());  
            System.out.println("Community name " + vCommunityName);  
            org.snmp4j.PDU vPDU = aEvent.getPDU();  
            Config config=new Config();  
            if (vPDU == null) {  
                System.out.println("Null pdu");  
            } else {  
                System.out.println("(rcv) " + vPDU.toString());  
                switch (vPDU.getType()) {  
                case org.snmp4j.PDU.GET:  
                case org.snmp4j.PDU.GETNEXT:  
                    break;  
                case org.snmp4j.PDU.SET:  
                    System.out.println("------SET----------");  
                    String reciv=vPDU.get(0).getVariable().getSyntaxString();  
                    System.out.println("----set------"+vPDU.get(0).toString());  
                    String setoid=vPDU.get(0).toString();  
                    System.out.println("-----set-----"+setoid.substring(0, setoid.indexOf("=")-1));  
                    System.out.println("-----set-----"+setoid.substring(setoid.indexOf("=")+1));  
                    config.setValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim(), setoid.substring(setoid.indexOf("=")+1).trim());  
                }  
                org.snmp4j.mp.StatusInformation statusInformation = new org.snmp4j.mp.StatusInformation();  
                org.snmp4j.mp.StateReference ref = aEvent.getStateReference();  
                try {  
                    System.out.println("Sending response");  
                    vPDU.setType(PDU.RESPONSE);  
                      
                    OID oid=vPDU.get(0).getOid();  
                    String setoid=vPDU.get(0).toString();  
                    System.out.println("----get------"+setoid.substring(0, setoid.indexOf("=")-1));  
                    System.out.println("-----get-----"+setoid.substring(setoid.indexOf("=")+1));  
                    vPDU.set(0, new VariableBinding(oid,  
                            new OctetString(config.getValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim()))));  
 
                    aEvent.getMessageDispatcher().returnResponsePdu(  
                            aEvent.getMessageProcessingModel(),  
 
                            aEvent.getSecurityModel(),  
                            aEvent.getSecurityName(),  
 
                            aEvent.getSecurityLevel(), vPDU,  
                            aEvent.getMaxSizeResponsePDU(), ref,  
 
                            statusInformation);  
                } catch (org.snmp4j.MessageException vException) {  
                    System.out.println(vException);  
                }  
            }  
        }  
    }  
 
    public static void main(String argv[]) {  
        Handler h = new Handler();  
        /** 初始化参?* */ 
        h.configure();  
        h.start();  
        /** Do nothing loop * */ 
        while (true) {  
            System.out.println("----------loop-------------");  
            synchronized (OTAAgent.class) {  
                try {  
                    OTAAgent.class.wait();  
                } catch (Exception e) {  
                }  
            }  
        }  
    }  


import java.util.*;
/**
* agent代理端
* leo
* 20080710
*/
import org.snmp4j.*;
import org.snmp4j.smi.*;

import snmputil.Config;

public class OTAAgent {

public static class Handler implements org.snmp4j.CommandResponder {
protected java.lang.String mAddress = null;
protected int mPort = 0;
protected java.lang.String mMyCommunityName = null;
protected org.snmp4j.TransportMapping mServerSocket = null;
protected org.snmp4j.Snmp mSNMP = null;

public Handler() {
}

public void configure() {
mAddress = "192.168.10.191";
mPort = 161;
mMyCommunityName = "OAagent";
}

public void start() {
try {
mServerSocket = new org.snmp4j.transport.DefaultUdpTransportMapping(
new org.snmp4j.smi.UdpAddress(java.net.InetAddress
.getByName(mAddress), mPort));
mSNMP = new org.snmp4j.Snmp(mServerSocket);
mSNMP.addCommandResponder(this);
mServerSocket.listen();
} catch (java.net.UnknownHostException vException) {
System.out.println(vException);
} catch (java.io.IOException vException) {
System.out.println(vException);
}
}

public synchronized void processPdu(
org.snmp4j.CommandResponderEvent aEvent) {
java.lang.String vCommunityName = new java.lang.String(aEvent
.getSecurityName());
System.out.println("Community name " + vCommunityName);
org.snmp4j.PDU vPDU = aEvent.getPDU();
Config config=new Config();
if (vPDU == null) {
System.out.println("Null pdu");
} else {
System.out.println("(rcv) " + vPDU.toString());
switch (vPDU.getType()) {
case org.snmp4j.PDU.GET:
case org.snmp4j.PDU.GETNEXT:
break;
case org.snmp4j.PDU.SET:
System.out.println("------SET----------");
String reciv=vPDU.get(0).getVariable().getSyntaxString();
System.out.println("----set------"+vPDU.get(0).toString());
String setoid=vPDU.get(0).toString();
System.out.println("-----set-----"+setoid.substring(0, setoid.indexOf("=")-1));
System.out.println("-----set-----"+setoid.substring(setoid.indexOf("=")+1));
config.setValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim(), setoid.substring(setoid.indexOf("=")+1).trim());
}
org.snmp4j.mp.StatusInformation statusInformation = new org.snmp4j.mp.StatusInformation();
org.snmp4j.mp.StateReference ref = aEvent.getStateReference();
try {
System.out.println("Sending response");
vPDU.setType(PDU.RESPONSE);

OID oid=vPDU.get(0).getOid();
String setoid=vPDU.get(0).toString();
System.out.println("----get------"+setoid.substring(0, setoid.indexOf("=")-1));
System.out.println("-----get-----"+setoid.substring(setoid.indexOf("=")+1));
vPDU.set(0, new VariableBinding(oid,
new OctetString(config.getValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim()))));

aEvent.getMessageDispatcher().returnResponsePdu(
aEvent.getMessageProcessingModel(),

aEvent.getSecurityModel(),
aEvent.getSecurityName(),

aEvent.getSecurityLevel(), vPDU,
aEvent.getMaxSizeResponsePDU(), ref,

statusInformation);
} catch (org.snmp4j.MessageException vException) {
System.out.println(vException);
}
}
}
}

public static void main(String argv[]) {
Handler h = new Handler();
/** 初始化参?* */
h.configure();
h.start();
/** Do nothing loop * */
while (true) {
System.out.println("----------loop-------------");
synchronized (OTAAgent.class) {
try {
OTAAgent.class.wait();
} catch (Exception e) {
}
}
}
}
}

q有一个就是获取和保存mib信息的类Q?



Java代码
package snmputil;  
 
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.FileReader;  
import java.io.IOException;  
import java.util.HashMap;  
import java.util.Hashtable;  
import java.util.Map;  
import java.util.Properties;  
 
public class Config {  
    Properties properties;  
    Map map;  
 
    public Config() {  
        properties = new Properties();  
 
        try {  
            properties.load(new FileInputStream("mib.properties"));  
        } catch (IOException e) {  
            System.out.println("dproperties文g错误");  
            e.printStackTrace();  
        }  
    }  
 
    /** 
     * Ҏoid获取value 
     *  
     * @param oid 
     * @return 
     */ 
    public String getValueByOID(String oid) {  
 
        return properties.getProperty(oid);  
 
    }  
 
    public void setValueByOID(String oid, String value) {  
          
        properties.setProperty(oid, value);  
        try {  
            properties.store(new FileOutputStream("mib.properties"),"mib.properties");  
        } catch (FileNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }   
      
 
    }  
 
    //试d?nbsp; 
       public static void main(String[] args) {  
           Config cfg=new Config();  
           String oid="1.3.6.1.2.1.1.8.0";  
           System.out.println("---------"+cfg.getValueByOID(oid));  
             
           cfg.setValueByOID(oid, "test");  
          
             
          
           System.out.println("---------"+cfg.getValueByOID(oid));  
       }  


package snmputil;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;

public class Config {
Properties properties;
Map map;

public Config() {
properties = new Properties();

try {
properties.load(new FileInputStream("mib.properties"));
} catch (IOException e) {
System.out.println("dproperties文g错误");
e.printStackTrace();
}
}

/**
* Ҏoid获取value
*
* @param oid
* @return
*/
public String getValueByOID(String oid) {

return properties.getProperty(oid);

}

public void setValueByOID(String oid, String value) {

properties.setProperty(oid, value);
try {
properties.store(new FileOutputStream("mib.properties"),"mib.properties");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

//试d?
   public static void main(String[] args) {
   Config cfg=new Config();
   String oid="1.3.6.1.2.1.1.8.0";
   System.out.println("---------"+cfg.getValueByOID(oid));
  
   cfg.setValueByOID(oid, "test");

  

   System.out.println("---------"+cfg.getValueByOID(oid));
   }
}

已有 0 人发表留aQ猛?>>q里<<-参与讨论


JavaEye推荐





2008-09-16 14:18 发表评论
]]>
PDUhttp://www.tkk7.com/ecsun/archive/2008/09/16/229152.htmlTue, 16 Sep 2008 06:18:00 GMThttp://www.tkk7.com/ecsun/archive/2008/09/16/229152.htmlhttp://www.tkk7.com/ecsun/comments/229152.htmlhttp://www.tkk7.com/ecsun/archive/2008/09/16/229152.html#Feedback0http://www.tkk7.com/ecsun/comments/commentRss/229152.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/229152.html 作? ecsun  链接Q?a style="color:red;">http://papa.javaeye.com/blog/220536  发表旉: 2008q?7?8?

声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!

PDUQ协议数据单元)Q用来表C管理站跟代理站点进行通信的数据。包括PDU的类型、传输的数据集合、错误说明等?
    除Snmpv1 Trap外,其他操作cd的PDU大致相同?
    Snmp4j针对Snmp的各个版本,开发了三个有关PDU的类。PDUQ针对Snmpv2cQ、PDUv1Q针对Snmpv1Q、ScopedPDUQ针对Snmpv3Q,但三个类除各自特别的一些参数外Q都基本相同。所以Snmp4j在设计的时候,PDU设计成另外两个的类Q他们能够׃n大部分功能?

Q?QPDU
    1QpducdQSnmpv1支持5U,get、set、getnext、trap、getresponse,Snmpv2c增加了getbulk、informQ?
    int   getTypeQ)
    void   setTypeQint type)
   
    2Q错误(主要?U错误,请参见RFCQ?
    void   setErrorStatus(int   status)
    int   getErrorStatus()
    String    getErrorStatusText()
    void   setErrorIndexQint indexQ?
    int   getErrorindexQ)

    3Q变?
    void add(VariableBinding vb) // 对于除get、getnext、getbulk?
    void addAll(VariableBinding[] vbs) // 对于除get、getnext、getbulk外的
    void addOID(VariableBinding vb) // 对于get、getnext、getbulk
    void addAllOID(VariableBinding[] vbs) // 对于get、getnext、getbulk
    VariableBinding getQint iQ?
    VariableBinding[] toArray()
    Vector   getVariableBindings()
    void setQint iQVariableBinding vbQ?
    void   removeQint iQ?
    void   clearQ)
    int   sizeQ)
   
Q?QPDUv1
    PDUv1l承了PDUQ除Snmp v1 trap操作?Q其它都跟PDU相同。因为Snmp v1的Trap设计PDU不同于其他操作的PDUQ它包括Q对象标识符QOIDQ、代理ip地址Qagent-addrQ、时间戳Qtime-stampQ、通用代理cdQgeneric-trapQ、特定代理类型(specific-trap)。所以相应的增加了对q些字段的get/set操作。具体参见API文档?

Q?QScopedPDU
    SnmpV3采用了不同安全策略,它的PDU也增加了有关安全斚w的几个字D:上下文名UͼContextNameQ、上下文引擎IDQcontextEngineIDQ等Q其它PDU字段属于USM来管理?
    所以ScopedPDU在PDU的基上增加了相应的get/set操作。参见API?

CZ代码如下Q(摘自API文档Q?

SNMPv1/v2c GETNEXT PDU
import org.snmp4j.PDU;
import org.snmp4j.smi.*;
...
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1"))); // sysDescr
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.1"))); // ifNumber
pdu.setType(PDU.GETNEXT);
...SNMPv3 GETBULK PDU
import org.snmp4j.ScopedPDU;
import org.snmp4j.smi.*;
...
ScopedPDU pdu = new ScopedPDU();
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.1"))); // ifNumber
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.10"))); // ifInOctets
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.16"))); // ifOutOctets
pdu.setType(PDU.GETBULK);
pdu.setMaxRepetitions(50);
// Get ifNumber only once
pdu.setNonRepeaters(1);
// set context non-default context (default context does not need to be set)
pdu.setContextName(new OctetString("subSystemContextA"));
// set non-default context engine ID (to use targets authoritative engine ID
// use an empty (size == 0) octet string)
pdu.setContextEngineID(OctetString.fromHexString("80:00:13:70:c0:a8:01:0d"));
...SNMPv1 TRAP PDU
import org.snmp4j.PDUv1;
...
PDUv1 pdu = new PDUv1();
pdu.setType(PDU.V1TRAP);
pdu.setGenericTrap(PDUv1.COLDSTART);
...SNMPv2c/SNMPv3 INFORM PDU
import org.snmp4j.ScopedPDU;
...
ScopedPDU pdu = new ScopedPDU();
pdu.setType(PDU.INFORM);
// sysUpTime
long sysUpTime = (System.currentTimeMillis() - startTime) / 10;
pdu.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(sysUpTime)));
pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, SnmpConstants.linkDown));
// payload
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.1"+downIndex),
                            new Integer32(downIndex)));

已有 0 人发表留aQ猛?>>q里<<-参与讨论


JavaEye推荐





2008-09-16 14:18 发表评论
]]>
targethttp://www.tkk7.com/ecsun/archive/2008/09/16/229151.htmlTue, 16 Sep 2008 06:18:00 GMThttp://www.tkk7.com/ecsun/archive/2008/09/16/229151.htmlhttp://www.tkk7.com/ecsun/comments/229151.htmlhttp://www.tkk7.com/ecsun/archive/2008/09/16/229151.html#Feedback0http://www.tkk7.com/ecsun/comments/commentRss/229151.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/229151.html 作? ecsun  链接Q?a style="color:red;">http://papa.javaeye.com/blog/220544  发表旉: 2008q?7?8?

声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!

关于Snmp4j包,最重要三个概念Q也是三个类QSnmp、Target、PDU?
   
    TargetQ表C理的设备。对于一个被理的设备,我们x它的AddressQ它使用的协议版本versionQ访问它的用户名和密码、以及对q个讑֤我们讄跟它打交道的一些策略,比如时旉、重传次数等。所以有如下ҎQ?
    1Q获取或者设|ip地址
    void setAddressQAddress addressQ?nbsp; 
    Address getAddressQ)
    2Q设|或者获取版本号Q支持V1QV2cQV3Q?
    void setVersionQint verQ?
    int   getVersionQ)
    3Q超时时?Q?单位Qmilliseconds Q?
    void   setTimeout(long outQ?
    long getTimeoutQ)
    4Q重传次?
    void   setRetries(int retries)
    int   getRetries()
    5Q最大PDU大小?
    void setMaxSizeRequestPDUQint maxQ?
    int   getMaxSizeRequestPDUQ)

    上面q些对于Snmp三个版本都是相同的,不同的只是在于安全方面,具体来说QSnmpv1Qv2c采用共同体(communityQ方式,安全性很差;SnmpV3采用Z用户的安全(USMQ方式,安全性能得到很大提高?
   Q?Q?对于Snmpv1Qv2cQ用TargetzZ个子cCommunityTargetQ增加了对Community的方法:
        void setCommunityQOctetString communityQ?
        OctetString getCommunityQ)

    Q?Q对于SnmpV3Q用其子类UserTargetQ增加了一些有关USM安全斚w的设|,比如采用的安全模型、安全别、访问该讑֤的用户名以及权威引擎IDQauthoritative engine IDQ:
       iQ安全别(支持三种安全U别Q?
       void setSecurityLevel(int level)
       int   getSecurityLevel()
       iiQ访问用户名Q该讉K用户名称必须在设|USM的时候添加其相应的UsmUserQ?
       void setSecurityName(OctetString name)
       OctetString   getSecurityName()
       iiiQ安全模型(支持三种安全模型Q?
       void setSecurityModel(int model)
       int   getSecurityModel()
       VQ权威引擎IDQauthoritative engine IDQ?
       void   setAuthoritativeEngineID(byte[] id)
       byte[] getAuthoritativeEngineIDQ)
   
对于Target的代码大致如下:Q摘自Snmp4j的说明文档)

Community Target
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setVersion(SnmpConstants.version1);User Target
UserTarget target = new UserTarget();
target.setAddress(targetAddress);
target.setRetries(1);
// set timeout to 500 milliseconds -> 2*500ms = 1s total timeout
target.setTimeout(500);
target.setVersion(SnmpConstants.version3);
target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
target.setSecurityName(new OctetString("MD5DES"));

已有 0 人发表留aQ猛?>>q里<<-参与讨论


JavaEye推荐





2008-09-16 14:18 发表评论
]]>
agenthttp://www.tkk7.com/ecsun/archive/2008/09/16/229150.htmlTue, 16 Sep 2008 06:18:00 GMThttp://www.tkk7.com/ecsun/archive/2008/09/16/229150.htmlhttp://www.tkk7.com/ecsun/comments/229150.htmlhttp://www.tkk7.com/ecsun/archive/2008/09/16/229150.html#Feedback0http://www.tkk7.com/ecsun/comments/commentRss/229150.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/229150.html 作? ecsun  链接Q?a style="color:red;">http://papa.javaeye.com/blog/220559  发表旉: 2008q?7?8?

声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!

agent代理端例子Q?



Java代码
import java.util.*;  
 
import org.snmp4j.*;  
import org.snmp4j.smi.*;  
//agent代理端例子Q?nbsp; 
public class Test2 {  
      
    public static class Handler implements org.snmp4j.CommandResponder {  
        protected java.lang.String mAddress = null;  
        protected int mPort = 0;  
        protected java.lang.String mMyCommunityName = null;  
        protected org.snmp4j.TransportMapping mServerSocket = null;  
        protected org.snmp4j.Snmp mSNMP = null;  
 
        public Handler() {  
        }  
 
        public void configure() {  
            mAddress = "192.168.10.191";  
            mPort = 161;  
            mMyCommunityName = "test";  
        }  
 
        public void start() {  
            try {  
                mServerSocket = new org.snmp4j.transport.DefaultUdpTransportMapping(  
                        new org.snmp4j.smi.UdpAddress(java.net.InetAddress  
                                .getByName(mAddress), mPort));  
                mSNMP = new org.snmp4j.Snmp(mServerSocket);  
                mSNMP.addCommandResponder(this);  
                mServerSocket.listen();  
            } catch (java.net.UnknownHostException vException) {  
                System.out.println(vException);  
            } catch (java.io.IOException vException) {  
                System.out.println(vException);  
            }  
        }  
 
        public synchronized void processPdu(  
                org.snmp4j.CommandResponderEvent aEvent) {  
            java.lang.String vCommunityName = new java.lang.String(aEvent  
                    .getSecurityName());  
            System.out.println("Community name " + vCommunityName);  
            org.snmp4j.PDU vPDU = aEvent.getPDU();  
            if (vPDU == null) {  
                System.out.println("Null pdu");  
            } else {  
                System.out.println("(rcv) " + vPDU.toString());  
                switch (vPDU.getType()) {  
                case org.snmp4j.PDU.GET:  
                case org.snmp4j.PDU.GETNEXT:  
                    break;  
                }  
                org.snmp4j.mp.StatusInformation statusInformation = new org.snmp4j.mp.StatusInformation();  
                org.snmp4j.mp.StateReference ref = aEvent.getStateReference();  
                try {  
                    System.out.println("Sending response");  
                    vPDU.setType(PDU.RESPONSE);  
                    vPDU.set(0, new VariableBinding(vPDU.get(0).getOid(),  
                            new OctetString("Test")));  
 
                    aEvent.getMessageDispatcher().returnResponsePdu(  
                            aEvent.getMessageProcessingModel(),  
 
                            aEvent.getSecurityModel(),  
                            aEvent.getSecurityName(),  
 
                            aEvent.getSecurityLevel(), vPDU,  
                            aEvent.getMaxSizeResponsePDU(), ref,  
 
                            statusInformation);  
                } catch (org.snmp4j.MessageException vException) {  
                    System.out.println(vException);  
                }  
            }  
        }  
    }  
 
    public static void main(String argv[]) {  
        Handler h = new Handler();  
        h.configure();  
        h.start();  
        /** Do nothing loop * */ 
        while (true) {  
            synchronized (Test2.class) {  
                try {  
                    Test2.class.wait();  
                } catch (Exception e) {  
                }  
            }  
        }  
    }  
}

已有 0 人发表留aQ猛?>>q里<<-参与讨论


JavaEye推荐





2008-09-16 14:18 发表评论
]]>
SNMP常用OIDhttp://www.tkk7.com/ecsun/archive/2008/09/16/229149.htmlTue, 16 Sep 2008 06:18:00 GMThttp://www.tkk7.com/ecsun/archive/2008/09/16/229149.htmlhttp://www.tkk7.com/ecsun/comments/229149.htmlhttp://www.tkk7.com/ecsun/archive/2008/09/16/229149.html#Feedback0http://www.tkk7.com/ecsun/comments/commentRss/229149.htmlhttp://www.tkk7.com/ecsun/services/trackbacks/229149.html 作? ecsun  链接Q?a style="color:red;">http://papa.javaeye.com/blog/221419  发表旉: 2008q?7?0?

声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!

Linux SNMP OID’s for CPU,Memory and Disk Statistics



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.

SNMP MIBs, OIDs Overview

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.

MIB files for specific devices or systems can be downloaded from here

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.

Here is a sample structure of an OID

Iso (1).org(3).dod(6).internet(1).private(4).transition(868).products(2).chassis(4).card(1).slotCps(2)B
.BcpsSlotSummary(1).cpsModuleTable(1).cpsModuleEntry(1).cpsModuleModel(3).3562.3

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

CPU Statistics

Load
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3

CPU
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0

Memory Statistics

Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0

Disk Statistics

The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ??partition):

disk / 100000 (or)

includeAllDisks 10% for all partitions and disks

The OIDs are as follows

Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1

System Uptime: .1.3.6.1.2.1.1.3.0

Examples

These Commands you need to run on the SNMP server

Get available disk space for / on the target host

#snmpget -v 1 -c “community?target_name_or_ip .1.3.6.1.4.1.2021.9.1.7.1

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

Get the 1-minute system load on the target host

#snmpget -v 1 -c “community?target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.1

Get the 5-minute system load on the target host

#snmpget -v 1 -c “community?target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.2

Get the 15-minute system load on the target host

#snmpget -v 1 -c “community?target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.3

Get amount of available swap space on the target host

#snmpget -v 1 -c “community?target_name_or_ip .1.3.6.1.4.1.2021.4.4.0



Variable Descriptor Object Identifier
System Group 
sysDescr 1.3.6.1.2.1.1.1
sysObjectID 1.3.6.1.2.1.1.2
sysUpTime 1.3.6.1.2.1.1.3
sysContact 1.3.6.1.2.1.1.4
sysName 1.3.6.1.2.1.1.5
sysLocation 1.3.6.1.2.1.1.6
sysServices 1.3.6.1.2.1.1.7
Interfaces Group 
ifNumber 1.3.6.1.2.1.2.1
ifTable  1.3.6.1.2.1.2.2
ifEntry 1.3.6.1.2.1.2.2.1
ifIndex 1.3.6.1.2.1.2.2.1.1
ifDescr 1.3.6.1.2.1.2.2.1.2
ifType 1.3.6.1.2.1.2.2.1.3
ifMtu 1.3.6.1.2.1.2.2.1.4
ifSpeed 1.3.6.1.2.1.2.2.1.5
ifPhysAddress 1.3.6.1.2.1.2.2.1.6
ifAdminStatus 1.3.6.1.2.1.2.2.1.7
ifOperStatus 1.3.6.1.2.1.2.2.1.8
ifLastChange 1.3.6.1.2.1.2.2.1.9
ifInOctets 1.3.6.1.2.1.2.2.1.10
ifInUcastPkts 1.3.6.1.2.1.2.2.1.11
ifInNUcastPkts 1.3.6.1.2.1.2.2.1.12
ifInDiscards 1.3.6.1.2.1.2.2.1.13
ifInErrors 1.3.6.1.2.1.2.2.1.14
ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15
ifOutOctets 1.3.6.1.2.1.2.2.1.16
ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17
ifOutNUcastPkts 1.3.6.1.2.1.2.2.1.18
ifOutDiscards 1.3.6.1.2.1.2.2.1.19
ifOutErrors 1.3.6.1.2.1.2.2.1.20
ifOutQLen 1.3.6.1.2.1.2.2.1.21
ifSpecific 1.3.6.1.2.1.2.2.1.22
IP Group 
ipForwarding 1.3.6.1.2.1.4.1
ipDefaultTTL 1.3.6.1.2.1.4.2
ipInReceives 1.3.6.1.2.1.4.3
ipInHdrErrors 1.3.6.1.2.1.4.4
ipInAddrErrors 1.3.6.1.2.1.4.5
ipForwDatagrams 1.3.6.1.2.1.4.6
ipInUnknownProtos 1.3.6.1.2.1.4.7
ipInDiscards 1.3.6.1.2.1.4.8
ipInDelivers 1.3.6.1.2.1.4.9
ipOutRequests 1.3.6.1.2.1.4.10
ipOutDiscards 1.3.6.1.2.1.4.11
ipOutNoRoutes 1.3.6.1.2.1.4.12
ipReasmTimeout 1.3.6.1.2.1.4.13
ipReasmReqds 1.3.6.1.2.1.4.14
ipReasmOKs 1.3.6.1.2.1.4.15
ipReasmFails 1.3.6.1.2.1.4.16
ipFragsOKs 1.3.6.1.2.1.4.17
ipFragsFails 1.3.6.1.2.1.4.18
ipFragCreates 1.3.6.1.2.1.4.19
ipAddrTable  1.3.6.1.2.1.4.20
ipAddrEntry 1.3.6.1.2.1.4.20.1
ipAdEntAddr 1.3.6.1.2.1.4.20.1.1
ipAdEntIfIndex 1.3.6.1.2.1.4.20.1.2
ipAdEntNetMask 1.3.6.1.2.1.4.20.1.3
ipAdEntBcastAddr 1.3.6.1.2.1.4.20.1.4
ipAdEntReasmMaxSize 1.3.6.1.2.1.4.20.1.5
ICMP Group 
icmpInMsgs 1.3.6.1.2.1.5.1
icmpInErrors 1.3.6.1.2.1.5.2
icmpInDestUnreachs 1.3.6.1.2.1.5.3
icmpInTimeExcds 1.3.6.1.2.1.5.4
icmpInParmProbs 1.3.6.1.2.1.5.5
icmpInSrcQuenchs 1.3.6.1.2.1.5.6
icmpInRedirects 1.3.6.1.2.1.5.7
icmpInEchos 1.3.6.1.2.1.5.8
icmpInEchoReps 1.3.6.1.2.1.5.9
icmpInTimestamps 1.3.6.1.2.1.5.10
icmpInTimestampReps 1.3.6.1.2.1.5.11
icmpInAddrMasks 1.3.6.1.2.1.5.12
icmpInAddrMaskReps 1.3.6.1.2.1.5.13
icmpOutMsgs 1.3.6.1.2.1.5.14
icmpOutErrors 1.3.6.1.2.1.5.15
icmpOutDestUnreachs 1.3.6.1.2.1.5.16
icmpOutTimeExcds 1.3.6.1.2.1.5.17
icmpOutParmProbs 1.3.6.1.2.1.5.18
icmpOutSrcQuenchs 1.3.6.1.2.1.5.19
icmpOutRedirects 1.3.6.1.2.1.5.20
icmpOutEchos 1.3.6.1.2.1.5.21
icmpOutEchoReps 1.3.6.1.2.1.5.22
icmpOutTimestamps 1.3.6.1.2.1.5.23
icmpOutTimestampReps 1.3.6.1.2.1.5.24
icmpOutAddrMasks 1.3.6.1.2.1.5.25
icmpOutAddrMaskReps 1.3.6.1.2.1.5.26
TCP Group 
tcpRtoAlgorithm 1.3.6.1.2.1.6.1
tcpRtoMin 1.3.6.1.2.1.6.2
tcpRtoMax 1.3.6.1.2.1.6.3
tcpMaxConn 1.3.6.1.2.1.6.4
tcpActiveOpens 1.3.6.1.2.1.6.5
tcpPassiveOpens 1.3.6.1.2.1.6.6
tcpAttemptFails 1.3.6.1.2.1.6.7
tcpEstabResets 1.3.6.1.2.1.6.8
tcpCurrEstab 1.3.6.1.2.1.6.9
tcpInSegs 1.3.6.1.2.1.6.10
tcpOutSegs 1.3.6.1.2.1.6.11
tcpRetransSegs 1.3.6.1.2.1.6.12
tcpConnTable  1.3.6.1.2.1.6.13
tcpConnEntry 1.3.6.1.2.1.6.13.1
tcpConnState 1.3.6.1.2.1.6.13.1.1
tcpConnLocalAddress 1.3.6.1.2.1.6.13.1.2
tcpConnLocalPort 1.3.6.1.2.1.6.13.1.3
tcpConnRemAddress 1.3.6.1.2.1.6.13.1.4
tcpConnRemPort 1.3.6.1.2.1.6.13.1.5
tcpInErrs 1.3.6.1.2.1.6.14
tcpOutRsts 1.3.6.1.2.1.6.15
UDP Group 
udpInDatagrams 1.3.6.1.2.1.7.1
udpNoPorts 1.3.6.1.2.1.7.2
udpInErrors 1.3.6.1.2.1.7.3
udpOutDatagrams 1.3.6.1.2.1.7.4
udpTable  1.3.6.1.2.1.7.5
udpEntry 1.3.6.1.2.1.7.5.1
udpLocalAddress 1.3.6.1.2.1.7.5.1.1
udpLocalPort 1.3.6.1.2.1.7.5.1.2
SNMP Group 
snmpInPkts 1.3.6.1.2.1.11.1
snmpOutPkts 1.3.6.1.2.1.11.2
snmpInBadVersions 1.3.6.1.2.1.11.3
snmpInBadCommunityNames 1.3.6.1.2.1.11.4
snmpInBadCommunityUses 1.3.6.1.2.1.11.5
snmpInASNParseErrs 1.3.6.1.2.1.11.6
NOT USED 1.3.6.1.2.1.11.7
snmpInTooBigs 1.3.6.1.2.1.11.8
snmpInNoSuchNames 1.3.6.1.2.1.11.9
snmpInBadValues 1.3.6.1.2.1.11.10
snmpInReadOnlys 1.3.6.1.2.1.11.11
snmpInGenErrs 1.3.6.1.2.1.11.12
snmpInTotalReqVars 1.3.6.1.2.1.11.13
snmpInTotalSetVars 1.3.6.1.2.1.11.14
snmpInGetRequests 1.3.6.1.2.1.11.15
snmpInGetNexts 1.3.6.1.2.1.11.16
snmpInSetRequests 1.3.6.1.2.1.11.17
snmpInGetResponses 1.3.6.1.2.1.11.18
snmpInTraps 1.3.6.1.2.1.11.19
snmpOutTooBigs 1.3.6.1.2.1.11.20
snmpOutNoSuchNames 1.3.6.1.2.1.11.21
snmpOutBadValues 1.3.6.1.2.1.11.22
NOT USED 1.3.6.1.2.1.11.23
snmpOutGenErrs 1.3.6.1.2.1.11.24
snmpOutGetRequests 1.3.6.1.2.1.11.25
snmpOutGetNexts 1.3.6.1.2.1.11.26
snmpOutSetRequests 1.3.6.1.2.1.11.27
snmpOutGetResponses 1.3.6.1.2.1.11.28
snmpOutTraps 1.3.6.1.2.1.11.29
snmpEnableAuthenTraps 1.3.6.1.2.1.11.30

http://www.ietf.org/

已有 0 人发表留aQ猛?>>q里<<-参与讨论


JavaEye推荐





2008-09-16 14:18 发表评论
]]>
վ֩ģ壺 ɫվwwwþþ| ѲŴɫaƵ| 91avƵ| ۺѾƷþþ| ޾Ʒ| ҹƵ| ĻӰѿ| Ƭһ| Ļվѹۿ| պƷƵ߹ۿ| ޹91Ʒר| һѻɫƬ| Ļһ | ɫٸŮ11p| Ļվ| С˵| ˾޾ƷӰwww| ѹۿ˵ŮƵ| ޺Сvideos| ˵ĺÿѹۿƵ | ۺ| 99Ѳ| ۺһ| ҹ޹˲| ߹ۿƵ| ҹӰ߹ۿ| | 91ѹۿ| һþ| ŷձ| 3344ѲŹۿƵ| Ʒ޳A߹ۿ| ۺAVһҳ | Ƭ91Ʒѿ3 | ߳Ƶ| ɫaѿ| 2022˾Ʒ | йɫվ| ˳ͼƬվ| ޾Ʒ벻߲HE| 91ɫۺϾþѷ|