Использование имени агента вместо IP в качестве адреса в SNMP4J

Я пытаюсь сделать программу, которая отправляет запросы SNMP на некоторые коммутаторы в сети.

Используя инструменты Net-snmp, я могу отправлять запросы на получение коммутатору, используя его имя, и он отлично работает. Но SNMP4J требует IP-адрес в CommunityTarget, поэтому я получаю 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);

Как я могу обойти это?


person dluga    schedule 07.03.2016    source источник


Ответы (1)


Вы можете получить IP-адрес, используя разрешение DNS, например, в этом ответе говорится:

InetAddress address = InetAddress.getByName(switchName); 
System.out.println(address.getHostAddress());
person dluga    schedule 08.03.2016