2013-12-12 69 views
0

我想爲某些設備創建snmp客戶端。但是,設備不能從本地主機直接訪問。想要使用外部IP創建snmp客戶端(會話)。我如何使用SNMP4j來填充它。如何在snmp4j中使用外部ip創建snmp客戶端?

下面是我用來創建snmp客戶端的代碼片段。

public SNMPClient(String address) { 
    super(); 
    this.address = address; 
    try { 
     start(); 
    } catch (IOException e) { 
     throw new RuntimeException(e); 
    } 
} 

private void start() throws IOException { 

    TransportMapping transport = new DefaultUdpTransportMapping(); 

    // Create Target Address object 
    this.target = new CommunityTarget(); 
    target.setCommunity(new OctetString("public")); 
    target.setVersion(SnmpConstants.version2c); 
    target.setAddress(new UdpAddress(address)); 
    target.setRetries(2); 
    target.setTimeout(50000); 
    snmp = new Snmp(transport); 

    transport.listen(); 
} 

我試過運輸創建過程中給extrenal IP像圖所示

TransportMapping transport = new DefaultUdpTransportMapping(new UdpAddress("192.8.8.8")); 

但似乎並不奏效。

請問我該怎麼辦?

由於提前, Brinal

回答

3

你錯過了在你的代碼監聽端口定義。這是它應該如何工作

TransportMapping transport = new DefaultUdpTransportMapping(new UdpAddress("192.8.8.8/161")); 
  • 161端口監聽標準SNMP代理查詢響應
  • 162偵聽SNMP代理陷阱消息

但IAM不知道我完全理解你題。 SNMP客戶端(管理器)用於查詢在網絡設備(如路由器,PC,打印機等)上運行的snmp代理並接收這些查詢的響應。管理員還會監聽由snmp代理髮起的陷阱消息。您的目的是創建snmp經理或代理嗎?

+0

誰會向代理提供MIB? ...位於Manager-Agent上下文中的MIB在哪裏? –

+0

雙方都有相同的mib表 – tomm