SNMP-MIB-SNMP4J簡介

SNMP全稱Simple Network Management Protocol,簡單網(wǎng)絡(luò)管理協(xié)議诅病。是TCP/IP協(xié)議的一部分泄私,屬于應(yīng)用層協(xié)議重荠。SNMP協(xié)議主要用來解決網(wǎng)絡(luò)設(shè)備的管理,大多數(shù)的網(wǎng)絡(luò)管理系統(tǒng)都是基于SNMP協(xié)議挤安。通過該協(xié)議可以實現(xiàn)在被管理的設(shè)備上獲取各種參數(shù)谚殊,還可以設(shè)置修改這些參數(shù)。

SNMP系統(tǒng)的組成

一般SNMP系統(tǒng)組成大致有4個部分:

  1. 網(wǎng)絡(luò)管理軟件漱受,也就是客戶端络凿,網(wǎng)絡(luò)管理員或者是你和我可以通過管理軟件對網(wǎng)絡(luò)設(shè)備進(jìn)行管理。也就是相當(dāng)于我們平時使用的系統(tǒng)的后臺管理昂羡。
  2. 網(wǎng)絡(luò)設(shè)備,也就是被管理的設(shè)備摔踱,比如服務(wù)器虐先,路由器,交換機等網(wǎng)絡(luò)設(shè)備派敷。
  3. 代理程序蛹批,代理程序運行在被管理的設(shè)備中,相當(dāng)于服務(wù)器的角色篮愉。
  4. MIB庫腐芍,全稱Management Information Base,相當(dāng)于數(shù)據(jù)庫试躏。存儲了被監(jiān)控設(shè)備的各種參數(shù)和狀態(tài)信息等猪勇。

SNMP協(xié)議就是用在網(wǎng)絡(luò)管理軟件和被管理的網(wǎng)絡(luò)設(shè)備之間的協(xié)議,通過此協(xié)議被管理的網(wǎng)絡(luò)設(shè)備才會聽我們的話颠蕴。

一般情況下做開發(fā)泣刹,比如我是做Java開發(fā)的助析,所需要做的就是開發(fā)網(wǎng)絡(luò)管理軟件,也就是客戶端椅您;服務(wù)器端的設(shè)備運行著代理程序外冀,所有的信息都存儲在MIB庫中;我們要做的就是通過SNMP協(xié)議去讀取和設(shè)置這些MIB庫存的數(shù)據(jù)掀泳。

SNMP協(xié)議的結(jié)構(gòu)

SNMP使用UDP進(jìn)行無連接操作雪隧,主要包括SNMP報頭和協(xié)議數(shù)據(jù)單元:

  • 版本標(biāo)識符
  • 團(tuán)體名
  • PDU

SNMP定義了五種報文,用來在管理軟件和代理程序之間進(jìn)行通信:

  1. get-request员舵,從代理程序處獲取信息
  2. get-next-request膀跌,從代理程序處獲取下一個參數(shù)值
  3. set-request,設(shè)置代理程序的值
  4. get-response固灵,代理程序返回值捅伤,上面三種請求都會使代理程序返回參數(shù)值
  5. trap,代理程序主動發(fā)送的報文

MIB庫簡介

Management Information Base 管理信息庫巫玻,每個被管理的設(shè)備都需要有MIB庫的存在丛忆,我們才能對設(shè)備進(jìn)行管理。

MIB庫中定義了可訪問的網(wǎng)絡(luò)設(shè)備及其屬性仍秤,通過OID熄诡,Object Identifer來區(qū)別。MIB采用分級樹形結(jié)構(gòu)诗力,以下是結(jié)構(gòu)圖:
![mib]MIB.png)
結(jié)構(gòu)類似于DNS和Unix的文件系統(tǒng)凰浮,例如1.3.6.1.2.1就代表iso.org.dod.internet.mgmt.mib

net-snmp

net-snmp是一種開放源代碼的簡單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management Protocol)軟件苇本,可以安裝在linux系統(tǒng)袜茧,unix以及windows上。作用就是上面提到的代理程序瓣窄。

安裝使用

本次在Centos7上面安裝使用net-snmp軟件笛厦,具體步驟如下:

安裝net-snmp:

sudo yum install net-snmp*

安裝完成之后,修改net-snmp配置文件/etc/snmp/snmpd.conf俺夕,在下面代碼后面添加兩行:

##       sec.name  source          community
#com2sec local     localhost       COMMUNITY
#com2sec mynetwork NETWORK/24      COMMUNITY

添加兩行如下:

com2sec local     localhost       public
com2sec mynet    192.168.0.0/24   public

上面的192.168.0.0/24根據(jù)你的實際情況添加裳凸,我的局域網(wǎng)網(wǎng)段是192.168.1.xxx,所以上面寫的是192.168.0.0劝贸,后面的24是子網(wǎng)掩碼255.255.255.0姨谷。

修改完配置文件后,啟動net-snmp服務(wù):

systemctl start snmpd.service

啟動后可以使用以下命令查看啟動是否有錯:

systemctl status snmpd.service -l

如果沒有提示錯誤啥的映九,現(xiàn)在服務(wù)應(yīng)該就已經(jīng)起來了梦湘,可以使用以下命令測試下:

snmpwalk -v1 -c public 192.168.110.198

后面的ip寫net-snmp安裝的那臺機器的ip。回車后會輸出以下信息(不會跟我的完全一樣践叠,只是類似的就對了):

SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-514.2.2.el7.x86_64 #1 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (4549) 0:00:45.49
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
........還有很多輸出言缤,省略了......

使用SNMP4J開發(fā)

簡單的例子:

public class GetCentosSystemInformation {

    private final static String REMOTE_ADDRESS = "udp:192.168.110.198/161";


    public static void main(String[] args) throws IOException {
        //初始化
        Address remoteAddress = GenericAddress.parse(REMOTE_ADDRESS);
        System.out.println("SNMP地址:" + REMOTE_ADDRESS + ";有效:" + remoteAddress.isValid());
        TransportMapping transportMapping = new DefaultUdpTransportMapping();
        Snmp snmp = new Snmp(transportMapping);
        snmp.listen();

        //構(gòu)造發(fā)送目標(biāo)
        CommunityTarget target = new CommunityTarget();
        target.setCommunity(new OctetString("public"));
        target.setAddress(remoteAddress);
        target.setVersion(SnmpConstants.version2c);
        target.setRetries(10);
        target.setTimeout(1500);

        //構(gòu)造發(fā)送內(nèi)容
        PDU pdu = new PDU();
        OID oid = new OID("1.3.6.1.2.10");
        pdu.add(new VariableBinding(oid));
        pdu.setType(PDU.GETNEXT);

        //異步監(jiān)聽響應(yīng)
        ResponseListener responseListener = new ResponseListener() {
            @Override
            public void onResponse(ResponseEvent event) {
                ((Snmp)event.getSource()).cancel(event.getRequest(),this);
                PDU response = event.getResponse();
                PDU request = event.getRequest();
                if(response == null){
                    System.out.println("請求超時:" + response + "禁灼,請求的內(nèi)容:" + request);
                }else {
                    System.out.println("獲取到信息:" + response);
                }
            }
        };

        //發(fā)送
        snmp.send(pdu,target,null,responseListener);
        //由于是異步獲取信息管挟,在這里需要程序不能結(jié)束運行,否則接收不到異步獲取的消息弄捕。
        System.in.read();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末僻孝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子守谓,更是在濱河造成了極大的恐慌穿铆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斋荞,死亡現(xiàn)場離奇詭異荞雏,居然都是意外死亡,警方通過查閱死者的電腦和手機平酿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門凤优,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜈彼,你說我怎么就攤上這事筑辨。” “怎么了幸逆?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵棍辕,是天一觀的道長。 經(jīng)常有香客問我还绘,道長楚昭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任蚕甥,我火速辦了婚禮哪替,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菇怀。我一直安慰自己,他們只是感情好晌块,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布爱沟。 她就那樣靜靜地躺著,像睡著了一般匆背。 火紅的嫁衣襯著肌膚如雪呼伸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音括享,去河邊找鬼搂根。 笑死,一個胖子當(dāng)著我的面吹牛铃辖,可吹牛的內(nèi)容都是我干的剩愧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼娇斩,長吁一口氣:“原來是場噩夢啊……” “哼仁卷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起犬第,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤锦积,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歉嗓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丰介,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年鉴分,在試婚紗的時候發(fā)現(xiàn)自己被綠了哮幢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡冠场,死狀恐怖家浇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碴裙,我是刑警寧澤钢悲,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站舔株,受9級特大地震影響莺琳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜载慈,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一惭等、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧办铡,春花似錦辞做、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至童叠,卻和暖如春框喳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工五垮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乍惊,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓放仗,卻偏偏與公主長得像润绎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匙监,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容