關於SNMP協議在java底層集成的一些新心得

由於做的是集成的產品,所以在原則上認爲:一切外帶的超鏈接,或者工具都是不安全,不夠自動化的,算不上集成的。寫這篇文章就是由於被交換機虐了千百遍,所以抒發一下。

周所周知,交換機的安全程度是非常高的,在交換機的通信原理決定了其安全的性質。做集成時,我要把交換機的相關信息寫到數據庫中,然後再在頁面裏展示出來。具體的樣式就是將你的交換機的IP直接輸入到瀏覽器的URL中進去後的頁面展示,就是我們集成的要做的事情。接到這個任務首先想到的是得到該交換機公司的支持----源碼,這是最夢幻的也是最不能的,然後就是通過各種底層的軟硬件的交互協議進行信息的讀取。無非就是SSH,和snmp協議。

SSH協議,針對的是ROOT用戶,snmp沒有root的用戶,同時也不能創建root用戶,所以就pass了。

SNMP協議,最簡單的硬件交互協議,即使一個硬件什麼協議,什麼接口沒有,也要有該協議的支持。網上能收到很多snmp協議java開發的源碼,都是能用的,在這裏我就不轉載了。當然其代碼並裏面的方法並不是都要使用,是一一對應的,你可以三三成組的。set/get/snmp?#...就是SET交換機的OID值進去,然後在GET其OID的值,將兩個方法的參數給到一個輸出的方法裏面,就可以得到Vector的數據類型的數組,對其進行解析

private String getIBLinkInfo(String hostname) throws IOException, InterruptedException {
String CPU_USAGE =null ;
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
snmp.listen();

CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setVersion(SnmpConstants.version2c);
target.setAddress(new UdpAddress(hostname+"/161"));
target.setTimeout(3000); //3s
target.setRetries(1);
Vector res=sendRequest(snmp, createGetNextPdu(), target);
CPU_USAGE =res.get(0).toString().split("=")[1].trim();
System.out.println(CPU_USAGE);
   return CPU_USAGE;
}


private static PDU createGetNextPdu() {
PDU pdu = new PDU();
pdu.setType(PDU.GETNEXT);
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.25.3.3.1.2")));//CPU利用率


return pdu;
}

private static Vector sendRequest(Snmp snmp, PDU pdu, CommunityTarget target)
throws IOException {
ResponseEvent responseEvent = snmp.send(pdu, target);
PDU response = responseEvent.getResponse();
Vector<? extends VariableBinding> vbs =null;
if (response == null) {
System.out.println("TimeOut...");
} else {
if (response.getErrorStatus() == PDU.noError) {
vbs = response.getVariableBindings();
for (VariableBinding vb : vbs) {
System.out.println(vb + " ," + vb.getVariable().getSyntaxString());
}
} else {
System.out.println("Error:" + response.getErrorStatusText());
}
}
return vbs;
}

這裏是我的代碼,我是將網上找到的代碼進行修改,使其完全變成方法,以便調用。如果不需要傳參的話,可以將方法中hostname去掉,再將方法體中hostname寫死。就可以做測試代碼了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章