python net-snmp使用


安裝

官網:http://www.net-snmp.org/download.html

環境:CentOS 6.6 + python 2.7.10

1、下載安裝包 net-snmp-5.6.2.1.tar.gz,並編譯安裝

tar -xvf net-snmp-5.6.2.1.tar.gz
cd net-snmp-5.6.2.1
/configure --with-python-modules --prefix=/usr/local/net-snmp  --enable-developer --libdir=/usr/lib64 --enable-shared
make
make install

2、安裝netsnmp python庫

cd net-snmp-5.6.2.1/python
python setup.py install

3、測試

import netsnmp

 

snmpwalk

       snmpwalk是SNMP的一個工具,它使用SNMP的GETNEXT請求查詢指定OID(SNMP協議中的對象標識)入口的所有OID樹信息,並顯示給用戶。通過snmpwalk也可以查看支持SNMP協議(可網管)的設備的一些其他信息,比如cisco交換機或路由器IP地址、內存使用率等,也可用來協助開發SNMP功能。

snmpwalk沒有單獨的安裝包,它被包含在net-snmp軟件包中的,所以我們只需要安裝net-snmp軟件包就可以得到snmpwalk。

snmpwalk使用方法:

snmpwalk -v 1或2c(代表SNMP版本) -c SNMP密碼 IP地址 OID(對象標示符)

–v:指定snmp的版本, 1或者2,該參數必須有。
–c:指定連接設備SNMP讀密碼,該參數必須有。
IP:指定要walk的設備的IP地址,該參數必須有。
OID:代表要獲取設備的指標oid,該參數不是必須的。

重要參數介紹:

  • –h:顯示幫助。
  • –v:指定snmp的版本, 1或者2c或者3。
  • –c:指定連接設備SNMP密碼。
  • –V:顯示當前snmpwalk命令行版本。
  • –r:指定重試次數,默認為0次。
  • –t:指定每次請求的等待超時時間,單為秒,默認為3秒。
  • –l:指定安全級別:noAuthNoPriv|authNoPriv|authPriv。
  • –a:驗證協議:MD5|SHA。只有-l指定為authNoPriv或authPriv時才需要。
  • –A:驗證字符串。只有-l指定為authNoPriv或authPriv時才需要。
  • –x:加密協議:DES。只有-l指定為authPriv時才需要。
  • –X:加密字符串。只有-l指定為authPriv時才需要。

參考文檔:http://www.ilanni.com/?p=8408

 

MIB Browser

       iReasoning MIB瀏覽器是一個強大和易於使用的工具由iReasoning SNMP API提供支持。 MIB瀏覽器是工程師管理啟用SNMP的網絡設備和應用程序不可或缺的工具。 它允許用戶加載標准的,專有的MIB,甚至一些錯誤的MIB。 它還允許它們發出SNMP請求以檢索代理的數據,或對代理進行更改。 內置陷阱接收器可以根據其規則引擎接收和處理SNMP陷阱。

下載地址:http://www.ireasoning.com/download.shtml

安裝后界面

可以通過官網下載MIB庫文件,導入ireasoning\mibbrowser\mibs目錄下,通過MIB Browser可以查看設備的私有OID

 

 

如何獲取Cisco設備OID值

思科的交換機snmp oid信息查詢  http://tools.cisco.com/Support/SNMP/do/BrowseOID.do

1、通過交換機執行命令獲取IOS名稱,如下圖標紅的內容

2、官網頁面查詢

3、點擊search后彈出新頁面,列出這個IOS所有可用的MIB庫,如下圖

4、選擇自己需要的MIB庫,如CISCO環境監視器MIB文件,名稱是CISCO-ENVMON-MIB,點擊V2

我需要查看設備的溫度值,找到具體的OBJECT-TYPE,如下圖的 ciscoEnvMonTemperatureStatusTable 

5、根據ciscoEnvMonTemperatureStatusTable 去官網查詢它的OID

6、根據查詢的OID,通過snmpwalk命令進行獲取

7、cpu信息獲取

下表顯示他們替換的新的MIB和他們的對象在舊有MIB旁邊和對象:

    # sysDescr  CSICO-3560 系統信息
    # ifNumber  CSICO-3560 接口總數
    # ifTable  CSICO-3560  接口詳細信息
    # .1.3.6.1.4.1.9.9.13.1.3.1.3  CSICO-3560 溫度
    # .1.3.6.1.4.1.9.9.13.1.4.1.3  CSICO-3560 風扇狀態
    # .1.3.6.1.4.1.9.9.13.1.5.1.3  CSICO-3560 電源狀態
    # 1.3.6.1.4.1.9.9.48.1.1.1.1   CSICO-3560內存池名稱,有多個,如Processor、I/O、Driver
    # 1.3.6.1.4.1.9.9.48.1.1.1.5   CSICO-3560內存池使用
    # 1.3.6.1.4.1.9.9.48.1.1.1.6   CSICO-3560內存池空閑,內存池總大小=使用+空閑

 

華為MIB庫

如何下載華為設備MIB  http://support.huawei.com/huaweiconnect/enterprise/thread-228323.html

 

python代碼實現獲取snmp信息

# -*- coding: utf-8 -*-


import netsnmp


class SnmpClass(object):
    """
    SNMP
    """
    def __init__(self, oid="sysDescr", version=1, destHost="localhost", community="public"):
        self.oid = oid
        self.version = version
        self.destHost = destHost
        self.community = community

    @property
    def query(self):
        """
        snmpwalk
        """
        try:
            result = netsnmp.snmpwalk(self.oid,
                                      Version=self.version,
                                      DestHost=self.destHost,
                                      Community=self.community)
        except Exception, err:
            print err
            result = None
        return result


def main():
    test_obj = SnmpClass(oid="ifIndex", destHost="192.168.137.11")
    print test_obj.query

if __name__ == '__main__':
    main()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM