0

我想为某些设备创建 snmp 客户端。但是,设备不能直接从 localhost 访问。想使用外部 ip 来创建 snmp 客户端(会话)。如何使用 SNMP4j 完成它。

下面是我用来创建 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();
}

我试图在传输创建期间提供外部 IP,如下所示

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

但似乎没有工作。

请建议我该如何继续?

在此先感谢,布林纳

4

1 回答 1

3

您的代码中缺少侦听端口定义。这就是它应该如何工作

TransportMapping transport = new DefaultUdpTransportMapping(new UdpAddress("192.8.8.8/161"));
  • 用于监听标准 snmp 代理查询响应的 161 端口
  • 162 监听 snmp 代理陷阱消息

但我不确定我是否完全理解你的问题。SNMP 客户端(管理器)用于查询运行在网络设备(如路由器、PC、打印机等)上的 snmp 代理并接收这些查询的响应。管理器还侦听 snmp 代理发出的陷阱消息。你的目的是创建snmp manager还是agent?

于 2014-01-04T19:03:48.100 回答