Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Работа с snmp


Автор: admsasha 12.6.2006, 13:53
Как работать с UDP я знаю, а вот как работать именно с snmp на VB ?

Может есть небольшой пример ? 

P.S. можно пример  и на Perl`е
 

Автор: Akina 12.6.2006, 19:43
Цитата(admsasha @  12.6.2006,  14:53 Найти цитируемый пост)
Как работать с UDP я знаю, а вот как работать именно с snmp на VB ?

Друг мой, UDP - это 4-5 уровень, а SNMP - 6-7 уровень... 

Автор: admsasha 13.6.2006, 02:14
Цитата(Akina @  13.6.2006,  02:43 Найти цитируемый пост)
Цитата(admsasha @  12.6.2006,  14:53 )
Как работать с UDP я знаю, а вот как работать именно с snmp на VB ?

Друг мой, UDP - это 4-5 уровень, а SNMP - 6-7 уровень...  


SNMP же работает по протоколу UDP или я чего то не понял ?

Вопрос тогда такой, как запрашивать какие либо значения у устройства через протокол SNMP (на VB6) ?


 

Автор: Akina 13.6.2006, 10:03
SNMP - протокол уровня приложения. Ты шлешь идентификатор, получаешь значение. Описание - в соотв. RFC.

А поверх какого протокола это происходит (TCP, UDP, IPX, etc.) - тебе глубоко фиолетово.  

Автор: admsasha 8.11.2006, 11:29
Цитата(Akina @ 13.6.2006,  17:03)
SNMP - протокол уровня приложения. Ты шлешь идентификатор, получаешь значение. Описание - в соотв. RFC.

А поверх какого протокола это происходит (TCP, UDP, IPX, etc.) - тебе глубоко фиолетово.

а примерчик можно ?  smile 

есть ip, 10.10.10.10
есть comunity, public
ну и mib .1.3.6.1.4.1.171.10.65.1.6.6.4.0

как его отослать устройству и получить ответ ?

Автор: JUmPER 8.11.2006, 12:05
Цитата(admsasha @  12.6.2006,  13:53 Найти цитируемый пост)
можно пример  и на Perl`е

держи =)
Код

    my ($session, $error) = Net::SNMP->session(
        -hostname    =>$_[0],
        -community    =>$_[1],
        -port            =>161,
        -timeout        =>2
        );
    unless (defined($session)) {
        return();
        }
        
    my $in_traf='1.3.6.1.2.1.2.2.1.10.'.$_[2];
    my $out_traf='1.3.6.1.2.1.2.2.1.16.'.$_[2];
    my $cur_state='1.3.6.1.2.1.2.2.1.8.'.$_[2];
    my $req_state='1.3.6.1.2.1.2.2.1.7.'.$_[2];
    my $result=$session->get_request(-varbindlist=>[$in_traf, $out_traf,$cur_state,$req_state]);
    unless (defined($result)) {
        $session->close;
        return();
        }
    $session->close;

кусок кода из системы учёта и слежения за трафиком

Автор: Fokrem 18.7.2014, 14:42
В продолжение темы, хотелось бы увидеть пример на VB для отправки запросов SNMP GET в виде програмулины где к примеру 3 поля 1) IP адрес 2) запрос OID 3) Получение ответа. Заранее спасибо! Требуется для построения более сложной программы. 

Автор: CompWorm 13.8.2014, 02:24
Fokrem
шаг первый: создать простую говорилку по TCP/UDP. примеров в инете масса. это поможет с отладкой.
шаг второй: отправить в качестве сообщения не стринговую строку, а шестнадцатиричный массив.
шаг третий: теперь в качестве шестнадцатеричного массива отправляем SNMP сообщение. поскольку SNMP не самый простой протокол, советую начатьhttp://www.rane.com/note161.html, там подробно описан порядок битов.

где может быть подвох - ну, во-первых нужно правильно считать "http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf". во-вторыx, SNMP довольно част заворачивают в PMPP. в нём тоже ничего премудрого нет, но там есть подсчёт CRC, алгоритм которой сильно различается для разных девайсов.
далее, следует упаковывать по нескольку MIBов в пакет, а не слать отдельными запросами - так быстей будет работать. 
ну и на последок, следует побайтово читать сокет, а не блоками, так как "0х00" не означает конец сообщения. читай байт размера сообщения, затем хвост такого размера. с PMPP проще, там есть фреймовый флаг, соответственно читаешь от 0х7Е до 0х7Е. можно просто тупо читать байт и тут же парсить - https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BF%D0%BE%D1%87%D0%BA%D0%B0_%D0%BE%D0%B1%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B5%D0%B9 в помощь

попробуй пройтись по этим трём пунктам и отпишись, где застрял.

в качестве инструмента для отладки юзай https://en.wikipedia.org/wiki/Wireshark(он нативно умеет разбирать SNMP) и http://www.ireasoning.com/mibbrowser.shtml (Для компиляции своих МИБ-файлов, используй http://mg-soft-mib-browser.updatestar.com/). кстати, пример SNMP сессии для Wireshark разобран на их http://wiki.wireshark.org/SNMP.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)