在 SNMP4J 中使用代理名称而不是 IP 作为地址
Using agent name instead of IP as Address in SNMP4J
我正在尝试制作一个程序,将 SNMP 查询发送到网络中的某些交换机。
使用 Net-snmp 工具,我可以使用它的名称向交换机发送 get 请求,并且工作正常。但是 SNMP4J 需要 CommunityTarget
中的 IP 地址,所以我得到 IllegalArgumentException
.
这是代码的相关部分:
TransportMapping transport = new DefaultUdpTransportMapping();
transport.listen();
CommunityTarget comtarget = new CommunityTarget();
comtarget.setCommunity(new OctetString("public"));
comtarget.setVersion(SnmpConstants.version1);
comtarget.setAddress(new UdpAddress("switchName")); // exception happens here
comtarget.setRetries(2);
comtarget.setTimeout(1000);
我该如何解决这个问题?
可以通过DNS解析获取IP地址,像这样answer表示:
InetAddress address = InetAddress.getByName(switchName);
System.out.println(address.getHostAddress());
我正在尝试制作一个程序,将 SNMP 查询发送到网络中的某些交换机。
使用 Net-snmp 工具,我可以使用它的名称向交换机发送 get 请求,并且工作正常。但是 SNMP4J 需要 CommunityTarget
中的 IP 地址,所以我得到 IllegalArgumentException
.
这是代码的相关部分:
TransportMapping transport = new DefaultUdpTransportMapping();
transport.listen();
CommunityTarget comtarget = new CommunityTarget();
comtarget.setCommunity(new OctetString("public"));
comtarget.setVersion(SnmpConstants.version1);
comtarget.setAddress(new UdpAddress("switchName")); // exception happens here
comtarget.setRetries(2);
comtarget.setTimeout(1000);
我该如何解决这个问题?
可以通过DNS解析获取IP地址,像这样answer表示:
InetAddress address = InetAddress.getByName(switchName);
System.out.println(address.getHostAddress());