linux下snmp4j獲取net-snmp的基本資訊
請求訊息中,msgAuthoritativeEngineID、msgAuthoritativeEngineBoots、msgAuthoritativeEngineTime值都是空的。接下來看伺服器對該請求的返回訊息:
應答訊息中自動攜帶了請求中為空的訊息的值。接下來真正互動時(請求oid:1.3.6.1.2.1.1.2.0),就要攜帶這些引數:
再看伺服器的返回訊息:
伺服器正確的返回了我們所請求的企業ID。 如果我們用snmp4j想伺服器傳送同樣的請求訊息,從抓包分析可以看出,snmp4j後臺也會與伺服器進行同樣的資訊交換,那我們如果基於snmp4j構建自動的trap時,如何在傳送trap訊息時獲取到所需要的這三個資訊呢?如何在trap訊息頭上新增上這樣的資訊呢? 首先,我們先來看看org.snmp4j.security下面的USM類,主要看下processIncomingMsg方法。 該方法就是snmp4j後臺與伺服器互動時,處理從伺服器返回訊息的方法,securityParameters引數就是存放了從伺服器端接收到的訊息,因此,只要我們把該物件拋到外面,我們就可以獲取到伺服器所返回給我們的資訊。 因此,我們需要修改USM類,增加一個變數,儲存securityParameters資訊,並提供一個get方法獲取即可。 如: private UsmSecurityParameters myUsp;
public UsmSecurityParameters getMyUsp() { return myUsp; } 這樣,在用snmp4j向伺服器傳送PDU請求後,只要伺服器返回了訊息,我們就可以從Snmp控制代碼的USM物件中獲取到伺服器返回的資訊。
這樣我們就可以通過snmp4j順利的獲取到伺服器端返回的msgAuthoritativeEngineID、msgAuthoritativeEngineBoots、msgAuthoritativeEngineTime值。 有了上述的引數值,在傳送trap訊息時,就可以新增到snmp訊息協議頭中了。 snmp.getUSM().setEngineDiscoveryEnabled(true); UsmTimeEntry usmTimeEntry = new UsmTimeEntry(engineID,bootTimes,engineTime); snmp.getUSM().getTimeTable().addEntry(usmTimeEntry); engineID,bootTimes,engineTime為從伺服器端獲取到底msgAuthoritativeEngineID、msgAuthoritativeEngineBoots、msgAuthoritativeEngineTime引數對應的值。 通過USM的TimeTable中增加UsmTimeEntry引數,就可以設定msgAuthoritativeEngineID、msgAuthoritativeEngineBoots、msgAuthoritativeEngineTime引數的值。 至此,我們就完成了通過修改snmp4j的原始碼來獲取net-snmp所提供的V3協議互動中所必須的引數,並在傳送trap訊息時,正確設定協議頭中的引數。 有關snmp4j如何傳送V3協議的trap訊息,就不羅嗦了。如果需要,請留言。
相關推薦
linux下snmp4j獲取net-snmp的基本資訊
linux下,net-snmp已經提供了完整的snmp服務和框架,尤其是基本的snmp資訊,如sysObjectId、CPU、記憶體等。通過標準的snmp的oid,可以很容易的從net-snmp所提供的服務中獲取這些資訊。但net-snmp的trap功能需要通過指令碼來配置
在linux下安裝配置Net-Snmp
一、安裝 系 統:CentOS 6.2(與RedHat Enterprise Linux 6.2操作一樣) [[email protected]]#tar -zxvf net-snmp-5.3.3.tar.gz [[email protecte
Linux下C獲取所有可用網絡卡資訊
在Linux下開發網路程式時,經常會遇到需要取本地網路介面名、IP、廣播地址、子網掩碼或者MAC地址等資訊的需求,最常見的辦法是配合巨集SIOCGIFHWADDR、SIOCGIFADDR、SIOCGIFBRDADDR與SIOCGIFNETMASK作為引數呼叫函式
Linux下ioctl獲取介面資訊
一、ifconf和ifreq結構 //ifconf通常是用來儲存所有介面資訊的 //if.h struct ifconf { int ifc_len; /* size of buffer */ union { char *ifcu_buf; /* input fr
linux下C獲取文件的大小
錯誤代碼 返回 system sys string 文件系統 識別碼 連接 chm 獲取文件大小這裏有兩種方法: 方法一、 範例: unsigned long get_file_size(const char *path) { unsigned lo
linux下的DHCP服務器基本配置
linuxlinux下的DHCP服務器基本配置:首先進入網卡配置網卡的IP地址,設置相關的網絡信息配置的網卡信息如下:安裝dhcp軟件包查看dhcp軟件包是否已經安裝進入/etc/dhcp/目錄下,編輯dhcp.conf配置文件語法檢測,檢測配置文件中的語法是否存在語法錯誤重啟dhcp服務,並設置服務為開機自
Linux下memcache編譯安裝與基本使用
清空 .tar.gz 報錯 關閉window eas -- 編譯 url 圖片 memcache是一套分布式的高速緩存系統,特點為key-value 存儲 一、在 linux 編譯安裝memcache、redis等,需要 gcc,make,cmake,autoconf,
Linux下程式設計獲取本地IP地址的常見方法
轉載於:http://blog.csdn.net/k346k346/article/details/48231933 在進行linux網路程式設計時,經常用到本機IP地址。本文羅列一下常見方法,以備不時之需。 獲取本機IP地址,是一個相當靈活的操作,原因是網路地址的設定非常靈活而且都是允
Linux下at 和 crontab的基本運用以及臨時檔案基本管理
一、at的基本運用 在終端輸入watch -n 1 ls -R /mnt/ //監控檔案每秒檢視一次並以第歸的方式列出來 使用at命令制定延時任務
Linux下java獲取CPU、記憶體、磁碟IO、網路頻寬使用率
原文地址:https://www.cnblogs.com/gisblogs/p/3985393.html 一、CPU 使用proc檔案系統,"proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過p
如何在Linux系統上獲取命令的幫助資訊,請詳細列出,描述man文件的章節是如何劃分的
由於Linux系統的命令繁多,無論是初學者還是資深人士,很多時候都需要檢視幫助。 1.幫助命令 1)獲取幫助的能力決定了技術的能力 2)多層次的幫助 whatis command --help man and info /usr/share/doc/ Red
OpenCV獲取視訊檔案基本資訊
import cv2 cameraCapture = cv2.VideoCapture('./res/test.mp4') print(cameraCapture.get(cv2.CAP_PROP_POS_MSEC)) print(cameraCapture
Linux下檢視作業系統當前登入使用者資訊的四種方法
作為系統開發或維護人員,你可能經常會(在某個時候)需要檢視系統中有哪些使用者正在活動。有些時候,你甚至需要知道他(她)們正在做什麼。本文為我們總結了4種檢視系統使用者資訊(通過編號(ID))的方法。 1. 使用w命令檢視登入使用者正在使用的程序資訊 w命令用於顯示已經登入系統的使用者的名稱,以及他們
Linux下部署ASP.NET服務連線oracle遇到的問題記錄
一、如何解除安裝MONO Q:mono是linux系統上跨平臺軟體,解除安裝它有兩種方式: 1、知道mono安裝路徑,安裝原來的路徑直接覆蓋安裝(最為簡單); 2、不知道mono安裝路徑,首先通過sudo find / -name mono命令查詢路徑, 也可進入mono安裝資料夾sudo make
分享在Linux下使用OSGi.NET外掛框架快速實現一個分散式服務叢集的方法
在這篇文章我分享瞭如何使用分層與模組化的方法來設計一個分散式服務叢集。這個分散式服務叢集是基於DynamicProxy、WCF和OSGi.NET外掛框架實現的。我將從設計思路、目標和實現三方面來描述。 1 設計思路 首先,我來說明一下設計思路。我們先來看看目前OSGi.NET外掛框架的服務。在這裡,服務不
Python獲取rpm包基本資訊[import rpm]
在進行測試之前,必須先檢查開發的rpm包資料 包括安裝目錄,許可權,檔案結構,是否包含某些檔案等資訊 寫了個指令碼自動化 python的rpm包,在網上資料實在不多,時間倉促,也就簡單看了下 首先,import import rpm 獲取hdr def get_h
Linux下啟動Tomcat顯示控制檯日誌資訊
Linux下直接啟動./startup.sh但是檢視不到啟動日誌資訊,通過ps –ef|grep tomcat檢視,實際已經啟動 但是可以通過執行./catalina.sh run啟動
linux下C/C++網路程式設計基本:socket實現tcp和udp的例子
簡單的linux下socket程式設計,分別基於TCP和UDP協議實現的簡單程式 linux下socket程式設計可以概括為以下幾個函式的運用: socket() bind() listen
ftp使用1——Linux下wget獲取ftp下目錄下檔案
如果某個目錄下有一個檔案可以使用ftp命令: get xxx 如果是某個目錄下有多個檔案(且不需要獲取目錄下子資料夾下的內容): mget * 如果是某個目錄下有子目錄希望獲取所有子目錄: wget -nH -m --ftp-user=myusername--f
linux下C獲取系統時間的方法
asctime(將時間和日期以字串格式表示) 相關函式 time,ctime,gmtime,localtime 表頭檔案 #include<time.h> 定義函式 char * asctime(const struct tm * ti