Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение таблицы mac адресов посредством SNMP, работаю с библиотекой snmp4j 
:(
    Опции темы
GrafCharodey
Дата 19.10.2009, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 14.12.2006

Репутация: нет
Всего: нет



Здравствуйте!
Я столкнулся с проблемой чтения mac адресов с управляемого свитча, точнее не могу полностью понять технологию работы библиотеки snmp4j.
Вот код который формирует пакет snmp, отсылает его на указанный адрес и получает ответ.

Код

public class Packadg {
    private String address;
    private String NameRead;

    public Packadg(String address, String NameRead){
        this.address = address;
        this.NameRead = NameRead;
    }

    @SuppressWarnings("static-access")
    public String Packing() throws IOException{
        UdpAddress targetAddress = new UdpAddress(address + "/161");

        CommunityTarget target = new CommunityTarget();
        target.setCommunity(new OctetString(NameRead));
        target.setAddress(targetAddress);
        target.setRetries(2);
        target.setTimeout(1000);
        target.setVersion(SnmpConstants.version2c);

        Snmp snmp = null;
        snmp = new Snmp(new DefaultUdpTransportMapping());
        snmp.listen();

        command.add(new VariableBinding(new OID("1.3.6.1.2.1.17.4.3")));
        command.setType(PDU.GETNEXT);

        ResponseEvent response = null;
        response = snmp.send(command, target);

        if(response.getResponse() != null){
            return address + " : " + response.getResponse().toString();
        }
        else{
            return address + " : 0";
        }
    }
}


В принципе всё работает, но проблема в том что я получаю только первый mac адрес и всё. Никак не могу разобраться как получить остальные. 
Заранее благодарен! Помогите, очень надо!

PM MAIL ICQ   Вверх
vanishox
Дата 8.12.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.12.2009

Репутация: нет
Всего: нет



Я тоже пытался разобраться с этой библиотекой. У меня тоже возникала проблема - GETNEXT - ом дергал только 1-й mac. Нашел библиотеку - AdventNetSNMPAPI_4_Std. 
----------------------------------------------------------------------------------------------------------------------------------------------------------
public Snmp(String swIP) {
        SwitchIP = swIP;
        snmpTarget = new SnmpTarget();                                
        snmpTarget.setTargetHost(swIP);                                
        snmpTarget.setTargetPort(161);                                
        snmpTarget.setTimeout(1);                                    
        snmpTarget.setRetries(1);                                    
        snmpTarget.setSnmpVersion(snmpTarget.VERSION2C);            
        snmpTarget.setCommunity("public");                            
                        com.adventnet.snmp.snmp2.SnmpVarBind[][] result = null;                         // результат опроса коммутатора, выбирает все данные принятые в ответ на запрос.
    }
    public void run(){
        try{
            arrayList = new ArrayList();
            snmpTarget.setObjectID(.........OID(String)...........);
            arrayList.add(snmpTarget.snmpGetNext());
            snmpTarget.setObjectID(.........OID(String)...........);    
            arrayList.add(snmpTarget.snmpGet().substring(0));
            snmpTarget.setObjectID(.........OID(String)...........);
            arrayList.add(snmpTarget.snmpGet());
            snmpTarget.setObjectID(.........OID(String)...........;
            arrayList.add(snmpTarget.snmpGetNext());
            snmpTarget.setObjectID(.........OID(String)...........);
            arrayList.add(snmpTarget.snmpGetNext());
            snmpTarget.setObjectID(.........OID(String)...........;
            result = snmpTarget.snmpGetAllVariableBindings();                       // - получение данных!
        }catch(Exception e){
            new ErrorLog(SwitchIP+".err",SwitchIP + "<|>" + " Ошибка инициализации объекта SNMP.");
            
        }
----------------------------------------------------------------------------------------------------------------------------------------------------------
могу прислать библиотеку.
PM MAIL   Вверх
DJFractal
Дата 9.2.2010, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.10.2006

Репутация: нет
Всего: нет



У меня не работает ни один из этих примеров, в чем может быть проблема, все-время возвращает значение 0
PM MAIL   Вверх
Evgin
Дата 16.2.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 30.11.2007

Репутация: нет
Всего: нет



Рабочий код. Получения нескольких полей из таблицы сетевых интерфейсов и вывод в виде таблички в конссоль.

Код

UdpAddress address = new UdpAddress("192.168.100.254/161");

        TransportMapping transportMapping = new DefaultUdpTransportMapping();

        Session snmp = new Snmp(transportMapping);
        transportMapping.listen();

        TableUtils tableUtils = new TableUtils(snmp, new DefaultPDUFactory());

        CommunityTarget target = new CommunityTarget(address, new OctetString(
                "public"));
        target.setRetries(1);
        target.setTimeout(3000L);
        target.setVersion(SnmpConstants.version2c);

        List list = tableUtils.getTable(target, new OID[] {
                new OID("1.3.6.1.2.1.2.2.1.1"), new OID("1.3.6.1.2.1.2.2.1.2"),
                new OID("1.3.6.1.2.1.2.2.1.3"), new OID("1.3.6.1.2.1.2.2.1.4"),
                new OID("1.3.6.1.2.1.2.2.1.7") }, null, null);

        for (Object obj : list) {
            TableEvent event = (TableEvent) obj;
            VariableBinding[] bindings = event.getColumns();

            if(bindings == null) continue;

            for (VariableBinding bind : bindings) 
                System.out.print(String.format("%25s", bind.getVariable()));
            
            System.out.println();
        }

        transportMapping.close();

 smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.