2014-09-17 3 views
0

Я хочу открыть для себя принтеры в моей подсети. Могу ли я сделать это с помощью net-snmp, как указано в следующей ссылке: https://sourceforge.net/p/net-snmp/bugs/2336/Обнаружение сети с использованием широковещательных запросов snmp

Но это не работает? Должен ли я включать любой флаг для трансляции в snmp_api для этого. Также как я буду обрабатывать ответы? Не могли бы вы объяснить мне в контексте этого простого приложения? http://www.net-snmp.org/wiki/index.php/TUT:Simple_Application

Я новичок в SNMP. Буду признателен за любую оказанную помощь.

PS: Я использую Net-SNMP 5.7.2.1

+0

Просьба разъяснить вопрос «что же вы пытаетесь». Кроме того, какой результат вы получаете, когда пытаетесь? Вы можете попробовать сделать тот же запрос с помощью инструмента командной строки 'snmpget', чтобы исключить ошибку программирования с вашей стороны. – Jolta

+0

Я тоже пробовал командной строки. Я получаю таймаут, когда я отправляю запрос «snmpget» на широковещательный адрес. – user3651245

+0

Попробуйте поместить ваш компьютер в ту же подсеть, что и принтеры. Он начинает работать? Тогда у вас есть проблема маршрутизации. Обратитесь к администратору локальной сети о том, какие ограничения распространяются на широковещательные пакеты в вашей сети. Из-за соображений безопасности большинство маршрутизаторов будут отбрасывать широковещательные пакеты извне. Администратор может настроить исключение для вашей станции управления. – Jolta

ответ

3

Вы должны понимать, что SNMP не является протокол с обнаружением устройств определяются,

https://sharpsnmplib.codeplex.com/wikipage?title=SNMP%20Device%20Discovery&referringTitle=Documentation

Ваше сообщение вещания может получить только ответ если это устройство использует имя сообщества, которое вы используете (для v1 и v2c).

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

0

// для идентификации принтера, если значение sysservice 72 принтера еще не

public void getDiscover(String oid_index){ 
    tempOID = "1.3.6.1.2.1.1.7"; 

    try{ 
    while(tempOID.equalsIgnoreCase("1.3.6.1.2.1.1.7")){ 
     //System.out.println("tttt"); 
    pair = (SNMPSequence)(new SNMPRequest(community, tempOID, **"IP"**, version)).getRequest(2).getSNMPObjectAt(0); 
    //mpValue = pair.getSNMPObjectAt(1); 
    oid_index = pair.getSNMPObjectAt(0).toString(); 
    //tempOID = pair.getSNMPObjectAt(0).toString().substring(0,10); 
    index.addElement(snmpValue); 
    System.out.println(snmpValue.toString());// sysservice value 
    } 
Смежные вопросы