SNMP4J開發trap監聽例項

2021-08-22 18:25:08 字數 2082 閱讀 1643

使用snmp4j監聽trap,也可以不用這樣的方式
/** *

* 測試snmp4j 中trap的接收方法.這裡只測試了v1和v2的trap.

* trap接收原理:snmp例項在註冊了實現commandresponder的listener之後,可以通過非同步呼叫的方法

* 將收到內容輸出.

* listen()啟動監聽執行緒,該執行緒中的操作是監聽指定埠,在收到trap告警之後將呼叫

* listener.processpdu(commandresponderevent event)方法,由processpdu來處理trap資訊.

*/import org.snmp4j.commandresponder;

import org.snmp4j.commandresponderevent;

import org.snmp4j.pdu;

import org.snmp4j.snmp;

import org.snmp4j.smi.udpaddress;

public class traptest }};

//在snmp例項中新增commandresponder listener

system.out.println("start listening!");

//開始啟動trap監聽.listen()方法內部啟動了乙個執行緒,這個執行緒監聽傳送到transport中定義的埠

//的訊息.

transport.listen();

system.out.println(transport.islistening());//測試監聽是否正常

//等待一段測試時間,在這段時間可以傳送trap資訊測試.

thread.sleep(180000);

} catch (exception e)

}}/**

執行結果如下:

start listening!

true

v1trap[reqestid=0,timestamp=0:00:00.00,enterprise=0.0,generictrap=2,specifictrap=0, vbs]

v1trap[reqestid=0,timestamp=0:00:00.00,enterprise=0.0,generictrap=2,specifictrap=0, vbs]

trap[requestid=1762734632, errorstatus=success(0), errorindex=0, vbs[1.3.6.1.2.1.1.3.0 = 0:00:00.00; 1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.3]]

trap[requestid=1762734633, errorstatus=success(0), errorindex=0, vbs[1.3.6.1.2.1.1.3.0 = 0:00:00.00; 1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.3]]

trap[requestid=1762734634, errorstatus=success(0), errorindex=0, vbs[1.3.6.1.2.1.1.3.0 = 0:00:00.00; 1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.3]]

trap[requestid=1762734635, errorstatus=success(0), errorindex=0, vbs[1.3.6.1.2.1.1.3.0 = 0:00:01.11; 1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.3]]

這裡測試傳送了6條trap,第1,2條為v1trap,第3,4,5,6條為v2trap.最後一條時間稍有改變.

trap的輸出的內容就這些,具體內容按照實際情況而定.

*/

這裡有個問題,沒有做測試:

在收到第乙個trap資訊後處理該trap訊息,如果不採用多執行緒處理該trap訊息,將會導致在trap處理時間內傳送過來的另乙個trap消無法接收而丟失.具體有無採用多執行緒處理可以通過測試得出.如果沒採用多執行緒處理,那麼有必要在processpdu方法中使用執行緒來處理該trap事件.

使用snmp4j實現Snmp功能(一)

上面的這段 直接參考snmp4j api說明文件中提供的例子,是乙個最簡單的snmp4j的應用。只要你的機器裡安裝了snmp通訊元件,上面的 應該可以執行成功。在上乙個例子中,我們只做了讀取的工作,接下來,我們進行一下設定操作,通過snmp修改讀取的機器名。public的預設許可權是唯讀,要想進行寫...

使用snmp4j實現Snmp功能(三)

前兩篇文章講了如何使用snmp4j實現set get 使用snmp4j實現snmp功能 一 以及傳送 接收trap 使用snmp4j實現snmp功能 二 功能。在我們前面的實現中,如果訪問mib庫中不存在的oid,get方式的話,我們會得到乙個null值,而set方式時agent端會把我們發過去的p...

利用snmp4j通過SNMP獲取遠端伺服器狀態

執行命令yum install net snmp utils net snmp 即可安裝。配置 vi etc snmp snmpd.conf 配置檔案,找到view systemview included這一行,在下面加上一行 view all included 1,同時修改一行 access no...