導航:首頁 > 編程語言 > pythonsnmptrap

pythonsnmptrap

發布時間:2023-07-16 14:43:23

① snmp trap 信息的獲取

trap的產生是由代理端的邏輯決定的,也就是寫代理程序的人決定的。
比如:你自己寫一個代理端,這個代理端用來採集cpu佔用率,
你可以在程序中規定:
如果cpu佔用率>60%,就發送一條trap命令

這個trap命令的觸發完成是由代理端決定的,你想怎麼觸發就怎麼觸發。

② Python網路編程6-使用Pysnmp實現簡單網管

  簡單網路管理協議SNMP(Simple Network Management Protocol)用於網路設備的管理。SNMP作為廣泛應用於TCP/IP網路的網路管理標准協議,提供了統一的介面,從而實現了不同種類和廠商的網路設備之間的統一管理。
  SNMP協議分為三個版本:SNMPv1、SNMPv2c和SNMPv3。

  SNMP系統由網路管理系統NMS(Network Management System)、SNMP Agent、被管對象Management object和管理信息庫MIB(Management Information Base)四部分組成。

  SNMP查詢是指NMS主動向SNMP Agent發送查詢請求,如圖1-3所示。SNMP Agent接收到查詢請求後,通過MIB表完成相應指令,並將結果反饋給NMS。SNMP查詢操作有三種:Get、GetNext和GetBulk。SNMPv1版本不支持GetBulk操作。

  不同版本的SNMP查詢操作的工作原理基本一致,唯一的區別是SNMPv3版本增加了身份驗證和加密處理。下面以SNMPv2c版本的Get操作為例介紹SNMP查詢操作的工作原理。假定NMS想要獲取被管理設備MIB節點sysContact的值,使用可讀團體名為public,過程如下所示:

  SNMP設置是指NMS主動向SNMP Agent發送對設備進行Set操作的請求,如下圖示。SNMP Agent接收到Set請求後,通過MIB表完成相應指令,並將結果反饋給NMS。

  不同版本的SNMP Set操作的工作原理基本一致,唯一的區別是SNMPv3版本增加了身份驗證和加密處理。下面以SNMPv3版本的Set操作為例介紹SNMP Set操作的工作原理。
假定NMS想要設置被管理設備MIB節點sysName的值為HUAWEI,過程如下所示:

  SNMPv1和SNMPv2c的Set操作報文格式如下圖所示。一般情況下,SNMPv3的Set操作信息是經過加密封裝在SNMP PDU中,其格式與SNMPv2c的Set操作報文格式一致。

  SNMP Traps是指SNMP Agent主動將設備產生的告警或事件上報給NMS,以便網路管理員及時了解設備當前運行的狀態。
  SNMP Agent上報SNMP Traps有兩種方式:Trap和Inform。SNMPv1版本不支持Inform。Trap和Inform的區別在於,SNMP Agent通過Inform向NMS發送告警或事件後,NMS需要回復InformResponse進行確認。

  在Ensp中搭建網路環境,在R2上啟用SNMP作為SNMP agent,Linux主機作為NMS;為方便觀察SNMP報文格式,在R2使用SNMP的版本為v2c。

通過下面的Python腳本獲取R2的系統信息與當前的主機名

運行結果如下

  在R2介面上抓包結果如下,Linux主機向R2的161埠發送SNMP get-request報文,可以看到SNMP使用的版本為v2c,設置的團體名為public,隨機生成了一個request-id,變數綁定列表(Variable bindings),即要查詢的OID,但Value為空;值得注意的是這些信息都是明文傳輸的,為了安全在實際環境中應使用SNMPv3。

通過下面的Python腳本獲取R2的介面信息。

運行結果如下:

在R2介面抓包結果如下,getBuikRequest相比get-request設置了一個max-repetitions欄位,表明最多執行get操作的次數。Variable bindings中請求的OID條目只有一條。

下面Python腳本用於設置R2的主機名為SNMPv2R2。

運行結果如下

在路由器上可以看到主機名有R2變為了SNMPv2R2。

get-response數據包內容與set-request中無異。

下面Python腳本用於接收,R2發送的Trap,並做簡單解析。

先運行該腳本,之後再R2上手動將一個介面shutdown,結果如下:

介面上抓包結果如下,此時團體名用的是public,data部分表明是trap。

由於Ensp中的通用路由器認證演算法只支持des56,而pysnmp不支持該演算法,因此使用AR路由器配置SNMPv3。

使用下面Python腳本發送snmpv3 get報文獲取設備系統信息。

抓包結果如下,首先發送get-resques進行SNMPv3認證請求,隨機生成一個msgID,認證模式為USM,msgflgs中Reportable置1要求對方發送report,其他為置0,表示不進行加密與鑒權;另外安全參數,認證參數、加密參數都為空,此時不攜帶get請求數據。

路由器給NMS回復report,msgID與resquest一致,Msgflgs中各位都置0,同時回復使用的安全引擎,認證與加密參數為空,不進行認證與加密,因此能看到data中的數據。

AR1收到請求後進行回復,數據包中msgflags標志位中除reportable外其他位都置1,表示不需要回復,同時進行加密與鑒權。同樣也可以看到認證用戶為testuser,認證參數與加密參數都有填充,data部分也是同樣加密。

參考:
什麼是SNMP - 華為 (huawei.com)
AR100-S V300R003 MIB參考 - 華為 (huawei.com)
SNMP library for Python — SNMP library for Python 4.4 documentation (pysnmp.readthedocs.io)

③ snmptrap命令從哪個ip發出

snmp_trap 命令用於生成一個通知(陷阱),以通過指定消息向 SNMP 管理器報告事件。
語法
snmp_trap [-debug] [-host HostName | -target TargetHost] [-com Community] [-msg Message]
-host HostName 指定連接到指定的主機上的 SNMP 代理程序。如果未指定此標志,那麼預設主機為本地主機。Host 可以是 IP 地址,也可以是主機名。

④ 日誌採集方式 SNMP TRAP 和 Syslog 的區別

文本方式

在統一安全管理系統中以文本方式採集日誌數據主要是指郵件或FTP方式。郵件
方式是指在安全設備內設定報警或通知條件,當符合條件的事件發生時,相關情況被一一記錄下來,然後在某一時間由安全設備或系統主動地將這些日誌信息以郵件
形式發給郵件接受者,屬於被動採集日誌數據方式。其中的日誌信息通常是以文本方式傳送,傳送的信息量相對少且需專業人員才能看懂。而FTP方式必須事先開
發特定的採集程序進行日誌數據採集,每次連接都是完整下載整個日誌文本文件,網路傳輸數據量可能非常大,屬於主動採集日誌數據方式。

隨著網路高速的發展,網路內部以百兆、千兆甚至萬兆互聯,即使採取功能強大的計算機來處理日誌數據包的採集工作,相對來說以上兩種方式速度和效率也是不盡人意。因此,文本方式只能在採集日誌數據范圍小、速度比較慢的網路中使用,一般在網路安全管理中不被主要採用。

SNMP
trap方式

建立在簡單網路管理協議SNMP上的網路管理,SNMP
TRAP是基於SNMP MIB的,因為SNMP MIB
是定義了這個設備都有哪些信息可以被收集,哪些trap的觸發條件可以被定義,只有符合TRAP觸發條件的事件才被發送出去。人們通常使用 SNMP
Trap
機制進行日誌數據採集。生成Trap消息的事件(如系統重啟)由Trap代理內部定義,而不是通用格式定義。由於Trap機制是基於事件驅動的,代理只有在監聽到故障時才通知管理系統,非故障信息不會通知給管理系統。對於該方式的日誌數據採集只能在SNMP下進行,生成的消息格式單獨定義,對於不支持
SNMP設備通用性不是很強。

網路設備的部分故障日誌信息,如環境、SNMP訪問失效等信息由SNMP
Trap進行報告,通過對 SNMP 數據報文中 Trap
欄位值的解釋就可以獲得一條網路設備的重要信息,由此可見管理進程必須能夠全面正確地解釋網路上各種設備所發送的Trap數據,這樣才能完成對網路設備的
信息監控和數據採集。

但是由於網路結構和網路技術的多樣性,以及不同廠商管理其網路設備的手段不同,要求網路管理系統不但對公有
Trap能夠正確解釋,更要對不同廠商網路設備的私有部分非常了解,這樣才能正確解析不同廠商網路設備所發送的私有
Trap,這也需要跟廠商緊密合作,進行聯合技術開發,從而保證對私有 Trap
完整正確的解析和應用。此原因導致該種方式面對不同廠商的產品採集日誌數據方式需單獨進行編程處理,且要全面解釋所有日誌信息才能有效地採集到日誌數據。
由此可見,該採集在日常日誌數據採集中通用性不強。

syslog方式

已成為工業標准協議的系統日誌
(syslog)協議是在加里佛尼亞大學伯克立軟體分布研究中心(BSD)的TCP/IP
系統實施中開發的,目前,可用它記錄設備的日誌。在路由器、交換機、伺服器等網路設備中,syslog記錄著系統中的任何事件,管理者可以通過查看系統記
錄,隨時掌握系統狀況。它能夠接收遠程系統的日誌記錄,在一個日誌中按時間順序處理包含多個系統的記錄,並以文件形式存檔。同時不需要連接多個系統,就可
以在一個位置查看所有的記錄。syslog使用UDP作為傳輸協議,通過目的埠514(也可以是其他定義的埠號),將所有安全設備的日誌管理配置發送
到安裝了syslog軟體系統的日誌伺服器,syslog日誌伺服器自動接收日誌數據並寫到日誌文件中。

另外,選用以syslog方式採集日誌數據非常方便,且具有下述原因:

第一,Syslog
協議廣泛應用在編程上,許多日誌函數都已採納
syslog協議,syslog用於許多保護措施中。可以通過它記錄任何事件。通過系統調用記錄用戶自行開發的應用程序的運行狀況。研究和開發一些系統程
序是日誌系統的重點之一,例如網路設備日誌功能將網路應用程序的重要行為向 syslog
介面呼叫並記錄為日誌,大部分內部系統工具(如郵件和列印系統)都是如此生成信息的,許多新增的程序(如tcpwrappers和SSH)也是如此工作
的。通過syslogd(負責大部分系統事
件的守護進程),將系統事件可以寫到一個文件或設備中,或給用戶發送一個信息。它能記錄本地事件或通過網路記錄到遠端設備上的事件。

第二,當今網路設備普遍支持syslog協議。幾乎所有的網路設備都可以通過syslog協議,將日誌信息以用戶數據報協議(UDP)方式傳送
到遠端伺服器,遠端接收日誌伺服器必須通過syslogd監聽UDP 埠514,並根據
syslog.conf配置文件中的配置處理本機,接收訪問系統的日誌信息,把指定的事件寫入特定文件中,供後台資料庫管理和響應之用。意味著可以讓任何
事件都登錄到一台或多台伺服器上,以備後台資料庫用off-line(離線) 方法分析遠端設備的事件。

第三,Syslog
協議和進程的最基本原則就是簡單,在協議的發送者和接收者之間不要求嚴格的相互協調。事實上,syslog信息的傳遞可以在接收器沒有被配置甚至沒有接收器的情況下開始。反之,在沒有清晰配置或定義的情況下,接收器也可以接收到信息。

閱讀全文

與pythonsnmptrap相關的資料

熱點內容
編譯的英語是啥 瀏覽:311
伺服器如何上傳網站東西 瀏覽:205
編譯器怎麼通過系統控制台輸出的 瀏覽:467
拆傢具用什麼app 瀏覽:45
單片機國內外 瀏覽:651
函數的運演算法則題目 瀏覽:719
有免費編譯軟體嗎 瀏覽:918
java互聯網公司 瀏覽:70
對弈下象棋的app哪裡好 瀏覽:707
有什麼食譜app推薦 瀏覽:471
python實現動態口令 瀏覽:825
我的世界電腦伺服器地址怎麼添加 瀏覽:850
傳奇地圖怎麼加密到pak 瀏覽:977
linux刪除mysql用戶 瀏覽:755
圖案設計pdf 瀏覽:586
pdf編輯器在線 瀏覽:471
華為雲雲耀伺服器如何關機 瀏覽:996
數字加密的歷史 瀏覽:614
宏傑文件夾打不開 瀏覽:820
施工日記app哪個好 瀏覽:567