国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SNMP協議在設備監控中的使用

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2025-06-27 11:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著網絡技術的飛速發展,網絡管理變得日益重要。網絡管理員需要一種高效、可靠的方式來監控網絡設備、收集狀態信息并對其進行配置。簡單網絡管理協議(SNMP)正是為此目的而設計的。本文將對SNMP進行詳細介紹,并提供使用SNMP進行網絡管理的基本指南。

1.簡介

SNMP(Simple Network Management Protocol)是一個基于互聯網協議族(IP)的網絡管理標準,用于在IP網絡中的管理節點與被管理節點之間進行通信,以實現對網絡設備的遠程監控和管理。SNMP具有簡單、高效、易于實現和擴展性強等優點,因此在網絡管理領域得到了廣泛應用。

2.SNMP的組成和版本

2.1.SNMP協議的組成

SNMP協議架構主要包括以下幾個部分:

wKgZO2heFJeALSFMAAHIRoxbf_Y301.png

??

1.管理信息庫(MIB):MIB是一個信息數據庫,用于存儲被管理設備的信息,如設備類型、接口狀態、路由表等。MIB是SNMP的核心,管理站通過SNMP協議獲取MIB中的信息,以實現對網絡設備的監控和管理。

2.管理站(NMS):NMS是網絡管理系統中的核心組件,負責收集、處理和存儲來自被管理設備的信息。NMS通常運行在網絡管理中心的服務器上,通過網絡管理軟件實現對網絡設備的遠程監控和管理。

3.代理(Agent):Agent是被管理設備上的軟件模塊,負責接收NMS的查詢請求,并返回MIB中的相關信息。同時,Agent還可以將設備的狀態變化通知給NMS。

2.2.SNMP協議版本

目前SNMP協議有三個版本,分別是:V1、V2和V3

?V1:SNMP協議的最初版本

?V2:在V1的基礎上增加community(團體名),這里的團體名可以理解為密碼

?V3:增加認證和對密文的傳輸的支持,這種方式安全等級最高

3.SNMP報文

wKgZPGheFJmAE32zAAAKGyHuD1A140.png

??

SNMP報文包含三個部分

?版本號:表明當前使用的版本,管理站和代理之間的版本號必須相同才能通信

?團體名:團體(community)是基本的安全機制,用于實現SNMP網絡管理員訪問SNMP管理代理時的身份驗證,類似于密碼,默認值為 public。團體名(Community name)是管理代理的口令,管理員被允許訪問數據對象的前提就是網絡管理員知道網絡代理的口令。

?PDU:snmp的數據結構

3.1.PDU詳細報文

wKgZO2heFJqAXX-cAAAZRvCHvmY485.jpg

??

3.2.PDU類型

?get-request:從代理(本質上是設備)獲取一個或多個參數值

?get-next-request:從代理緊接著取出下一個參數值

?set-request:設置代理一個或多個參數值

?get-response:對上述三種請求的響應

?trap:設備主動上報的數據

3.3.差錯狀態

?noError:無錯誤

?tooBig:代理無法將回答裝入到一個SNMP報文中

?noSuchName:操作指明了一個不存在的變量

?badValue:一個set操作指明了一個無效值或無效語法

?readOnly:管理進程試圖修改一個只讀變量

?genErr:某些其他差錯

3.4.trap類型

?coldStart:代理進行了初始化

?warmStart:代理進行了重新初始化

?linkDown:一個接口從工作狀態變為故障狀態

?linkUp:一個接口從故障狀態變為工作狀態

?authenticationFailure:從SNMP管理進程接收到具有一個無效共同體的報文

?egpNeighborLoss:一個EGP相鄰路由器變為故障狀態

?enterpriseSpecific:代理自定義事件,需要用后面的“特定代碼”來指明

4.MIB詳解

4.1.MIB樹結構

MIB以樹狀結構進行存儲,樹的葉子節點表示管理對象,它可以通過從根節點開始的一條惟一路徑來識別,這也就是OID(Object Identifier)。

wKgZPGheFJqAYBHhAAAr5BO9Byk041.jpg

OID是由一些系列非負整數組成,用于唯一標識管理對象在MIB樹中的位置。由SMI來保證OID不會沖突。

MIB文件一旦發布,OID就和被定義的對象綁定,不能修改。MIB節點不能被刪除,只能將它的狀態置為“obsolete”,表明該節點已經被廢除。

在上圖的樹形結構中,mgmt對象可以標識為:{ iso(1) org(3) dod(6) internet(1) mgmt(2) },簡單標記為:1.3.6.1.2,這種標識就叫做OID。

NMS通過OID引用Agent中的對象。

4.2.MIB分類

MIB可以分為公有MIB和私有MIB兩種。

?公有MIB:一般由RFC定義,主要用來對各種公有協議進行結構化設計和接口標準化處理。大多數的設備制造商都需要按照RFC的定義來提供SNMP接口。

?私有MIB:是公有MIB的必要補充,當公司自行開發私有協議或者特有功能時,可以利用私有MIB來完善SNMP接口的管理功能,同時對第三方網管軟件管理存在私有協議或特有功能的設備提供支持。

網絡設備的很多數據都以MIB的樹結構存儲,根據數據對應的OID,我們便可以獲取到網絡設備的各種統計數據和配置數據,實現網絡設備的監控。

5.SNMP實踐

5.1.snmp命令

5.1.1.snmpwalk

用于獲取 SNMP 設備上的數據,它遍歷設備的 SNMP 樹,并返回特定對象標識符(OID)的值,通常用于查詢設備的信息和狀態。使用 snmpwalk 可以獲取有關設備的詳細信息,例如接口、系統信息、傳感器狀態等。以下是 snmpwalk 的一般用法:

snmpwalk -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID
SNMP_VERSION:SNMP 版本,通常是 "1"(SNMPv1)或 "2c"(SNMPv2c)。
COMMUNITY_STRING:SNMP 社區字符串,用于身份驗證。
TARGET_HOST:目標設備的主機名或 IP 地址。
OID:要查詢的對象標識符。

5.1.2.snmptrap

snmptrap 用于生成和發送 SNMP 陷阱(trap)到 SNMP 管理器,這些陷阱通常表示設備上發生的重要事件或告警。snmptrap 常用于監控設備狀態變化和異常事件。以下是 snmptrap 的一般用法:

snmptrap -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST TRAP_OID [OID_VALUE] [OPTIONS]
SNMP_VERSION:SNMP 版本,通常是 "1"(SNMPv1)或 "2c"(SNMPv2c)。
COMMUNITY_STRING:SNMP 社區字符串,用于身份驗證。
TARGET_HOST:目標 SNMP 管理器的主機名或 IP 地址。
TRAP_OID:陷阱的對象標識符,表示事件類型。
OID_VALUE:可選,與陷阱相關的 OID 值。
OPTIONS:可選,包括發送陷阱的其他選項,如 -p(指定陷阱端口)等。

5.1.3.snmpget

用于獲取單個 SNMP 對象的值。你可以指定要查詢的 OID,它將返回相應的值。

snmpget -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID

snmpget -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID

5.1.4.snmpset

用于設置 SNMP 對象的值。它允許你修改設備上的特定 OID 的值。

snmpset -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID TYPE VALUE

5.1.5.snmpbulkwalk

類似于 snmpwalk,但它使用了 SNMP Bulk Protocol(SNMPv2c)來提高效率,特別對于大型數據集。

snmpbulkwalk -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID

5.1.6.snmpinform

用于向 SNMP 管理器發送 SNMP INFORM 消息,這是一種更可靠的通知機制,它需要管理器進行確認。

snmpinform -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID

在網絡設備信息采集中,我們通常會通過snmpget和snmpwalk命令獲取網絡設備的各種運行和配置數據。

5.2.代碼實現

基于以上知識,我們考慮通過代碼的方式執行snmp命令,獲取設備的基本信息,實現設備的自動化監控。本文所有案例都基于Java語言,其余語言類似。

5.2.1.引入依賴

如下所示,我們引入snmp的依賴:


   org.snmp4j
   snmp4j
   2.7.0

5.2.1.代碼實現

public class SnmpUtils {
    
    /**
     * 根據oid獲取數據
     * @param ip
     * @param community
     * @param oid
     * @return
     */
    @SneakyThrows
    public static void snmpGet(String ip, String community, String oid) {

        Snmp snmp = null;
        try {

            snmp = new Snmp(new DefaultUdpTransportMapping()); // 構造一個UDP
            snmp.listen(); // 開始監聽snmp消息

            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString(community));// snmpv2的團體名
            target.setVersion(SnmpConstants.version2c); // snmp版本
            target.setAddress(new UdpAddress(ip));
            target.setTimeout(1000); // 時延
            target.setRetries(2); // 重傳

            PDU pdu = new PDU();
            pdu.setType(PDU.GET);
            pdu.addOID(new VariableBinding(new OID(oid)));

            ResponseEvent responseEvent = snmp.get(pdu, target);
            PDU response = responseEvent.getResponse();
            Vector bindings = response.getVariableBindings();
            bindings.forEach(item ->{
                System.out.println(String.format("OID為:%s的值為:%s", item.getOid().toDottedString(), item.getVariable().getSyntaxString()));
            });

        }finally {
            if (snmp != null) {
                snmp.close();
            }
        }
    }

    /**
     * 根據oids獲取數據
     * @param ip
     * @param community
     * @return
     */
    @SneakyThrows
    public static void getTable(String ip, String community, List oidList)
    {
        Snmp snmp = null;
        LinkedHashMap> resMap = new LinkedHashMap();
        try {

            snmp = new Snmp(new DefaultUdpTransportMapping()); // 構造一個UDP
            snmp.listen(); // 開始監聽snmp消息

            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString(community));// snmpv2的團體名

            target.setVersion(SnmpConstants.version2c); // snmp版本

            target.setAddress(new UdpAddress(ip));
            target.setTimeout(1000); // 時延
            target.setRetries(2); // 重傳

            TableUtils utils = new TableUtils(snmp, new DefaultPDUFactory(
                    PDU.GETNEXT));// GETNEXT or GETBULK
            utils.setMaxNumRowsPerPDU(109); // only for GETBULK, set max-repetitions, default is 10

            utils.setCheckLexicographicOrdering(false);

            OID[] oids = oidList.stream().filter(StringUtils::isNotBlank).map(OID::new).toArray(OID[]::new);

            List table = utils.getTable(target, oids, null, null);
            table.forEach(item ->{
                for (VariableBinding column : item.getColumns()) {
                    System.out.println(String.format("當前的oid為:%s,結果為:%s", column.getOid().toDottedString(), column.getVariable().getSyntaxString()));
                }
            });
        }finally {
            if (snmp != null) {
                snmp.close();
            }
        }
    }
}

其中snmpGet方法對應snmpget命令,snmpWalk方法對應snmpwalk命令。

6.總結

本文開篇即對SNMP(簡單網絡管理協議)的基本概念與核心構成進行了全面闡述,緊接著深入剖析了SNMP命令在實際網絡管理場景中的具體應用。在文章的最后部分,通過Java編程語言的實踐應用,本文成功展示了SNMP命令的實現過程。對SNMP協議的深入理解與掌握,無疑將為網絡設備的數據監控及多元化自動化管理提供有力支持,進而顯著提升網絡運維的工作效率。


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SNMP
    +關注

    關注

    0

    文章

    119

    瀏覽量

    30665
  • 設備監控
    +關注

    關注

    0

    文章

    20

    瀏覽量

    6416
  • 京東云
    +關注

    關注

    0

    文章

    205

    瀏覽量

    254
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    IDC機房設備監控SNMP協議獲取設備信息

    SNMP
    深圳市金鴿科技有限公司
    發布于 :2023年03月02日 19:52:49

    snmp協議抓包分析

    snmp 協議,下圖的情況不解,程序怎么控制,詢問你一此,應答一次;圖中確實連續詢問三次,連續應答不三次。希望能幫我解決下
    發表于 03-03 15:37

    Labview監控帶有snmp網卡設備有沒有問題?

    想用Labview監控帶有snmp網卡的設備協議是TCP/IP.設備給出了MIB文件(管理信息庫(MIB)是TCP/IP網絡管理
    發表于 06-15 09:22

    用LWIP的SNMP監控嵌入式設備

    各位大神: 最近要搞一個項目,用LWIP的SNMP監控嵌入式設備,對ucos和lwip還算熟悉,但對snmp一頭霧水,請搞過snmp的大神指
    發表于 03-24 04:35

    SNMP協議WAGO工業以太網系統的應用是什么?

    SNMP管理網絡由哪些部分組成?SNMP協議WAGO工業以太網系統的應用是什么?
    發表于 05-20 06:46

    AN_基于FreeRTOS+LwIP的SNMP實現方案

    、路由器和其他網絡設備的遠程管理和監視。利用SNMP協議可以更好地管理和監控網絡。管理工作站可以遠程管理所有支持該協議的網絡
    發表于 11-02 07:03

    協議轉換網關支持OPC UA及SNMP協議

    工業自動化領域中,Modbus RTU、IEC61850、IEC101、PLC協議SNMP OPC UA是常見的通信協議。為了實現不同系統之間的數據交互,將上述
    發表于 10-09 19:52

    什么是簡單網絡管理協議(SNMP)

    什么是簡單網絡管理協議(SNMP) SNMP(Simple Network Management Protocol,簡單網絡管理協議)的前身是簡單網關
    發表于 03-20 15:13 ?2579次閱讀

    基于SNMP協議的電網實時視頻監控系統設計

    電網設備數量、復雜度日益提高,不同電力設備生產廠商的視頻設備采用的協議標準、功能、兼容性不同,需要采用統一的
    發表于 10-31 15:31 ?10次下載
    基于<b class='flag-5'>SNMP</b><b class='flag-5'>協議</b>的電網實時視頻<b class='flag-5'>監控</b>系統設計

    snmp協議詳解

    )定義的一套網絡管理協議。該協議基于簡單網關監視協議(SGMP:Simple Gateway Monitor Protocol)。利用SNMP,一個管理工作站可以遠程管理所有支持這種
    發表于 01-15 15:13 ?7485次閱讀
    <b class='flag-5'>snmp</b><b class='flag-5'>協議</b>詳解

    SNMP五種協議數據單元以及SNMP框架組成

    五層協議的應用層協議,用于網絡管理的協議SNMP主要用于網絡設備的管理。由于
    的頭像 發表于 08-19 17:32 ?7061次閱讀

    使用 ntopng 和 SNMP 監視網絡設備

    總結SNMP廣泛用于網絡監控。能夠遠程監控網絡設備是清晰了解當前和過去網絡運行狀況的基礎。ntopng系統地與SNMP
    的頭像 發表于 02-07 16:48 ?1743次閱讀
    使用 ntopng 和 <b class='flag-5'>SNMP</b> 監視網絡<b class='flag-5'>設備</b>

    什么是SNMPSNMP是如何工作的?

    用于監控和管理各種設備,包括路由器、交換機、服務器和打印機等。 SNMP工作原理如下:一個網絡設備分為兩類,
    的頭像 發表于 12-27 13:58 ?2894次閱讀

    snmp協議的主要功能 snmp協議在哪一層

    SNMP(Simple Network Management Protocol)是一種用于網絡管理的應用層協議。它主要用于監控和管理網絡上的設備以及收集
    的頭像 發表于 01-22 15:00 ?3318次閱讀

    機房動環監控系統Modbus轉SNMP V3協議遠程I/O模塊

    的新型監控方案的需求日益迫切。在此背景下,鋇錸技術推出了IOy系列SNMP協議遠程IO模塊BL197。 一、SNMP
    的頭像 發表于 08-30 16:25 ?1468次閱讀