Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование агента NET-SNMP в своем железе
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
nvn
Суть происходящего:
...есть железка, на которой запустил Linux, затем собрал и запустил там агента NET-SNMP, также там работает моя программа пользователя (т.е. моя программа), которой в процессе работы необходимо передавать и принимать данные SNMP-браузеру, и в зависимости от данных производить манипуляции с железом...

агент запускается, выдает SysDescr и т.п., а вот дальше...

вот тут я не могу понять, как написать MIB (или как научить агента нужным переменным) для своей железки, и как взаимодействовать с NET-SNMP, что бы передавать/принимать данные?

Может кто уже сталкивался с подобным и подскажет как надо?

Или на простом примере обяснить, как сделать так, что бы записав из браузера в определенную переменную 1 зажигался светодиод, записал 0 - потух.

Заранее спасибо!
Idle
вам нужно добавить свой функционал в агента
посмотрите для начала FAQ из дистрибутива с иходниками netsnmp, раздел CODING, вопрос "How do I write C code to integrate with the agent?" и далее
наличие mib-файла необязательно, но в дистрибутиве есть примочка mib2c, которая генерирует шаблоны функций на си для реализации расширения агента
я занимался этим больше двух лет назад, подробно объяснить мне сложно, попробую найти свои старые исходники
nvn
Цитата(Idle @ Jan 17 2010, 18:29) *
вам нужно добавить свой функционал в агента
посмотрите для начала FAQ из дистрибутива с иходниками netsnmp, раздел CODING, вопрос "How do I write C code to integrate with the agent?" и далее
наличие mib-файла необязательно, но в дистрибутиве есть примочка mib2c, которая генерирует шаблоны функций на си для реализации расширения агента
я занимался этим больше двух лет назад, подробно объяснить мне сложно, попробую найти свои старые исходники

Был бы Вам очень признателен за исходники (хотя бы фрагменты) в качестве примера
Idle
и вот эту статью посмотрите http://uuu.enseirb.fr/~kadionik/embedded/s...mp_english.html
nvn
Цитата(Idle @ Jan 20 2010, 12:08) *
и вот эту статью посмотрите http://uuu.enseirb.fr/~kadionik/embedded/s...mp_english.html

Спасибо, буду читать и пробовать разобраться
nvn
Снова нужна помощь по NET-SNMP. Собрал snmpd с поддержкой AgentX, запустил моего субагента, он подключается к мастеру и все рабоатет.
Сейчас пытаюсь сделать вывод таблицы по принципу data_set и проблемма в том, что не могу получить первый столбец, вывод идет сразу со второго.
делаю следующее:

init_nstAgentSubagentObject()
{
static oid alarmTable_oid[] = { 1, 1, 2 };
size_t alarmTable_oid_len = OID_LENGTH(alarmTable_oid);
netsnmp_table_data_set *table_set;
netsnmp_table_row *row;

table_set = netsnmp_create_table_data_set("alarmTable");
table_set->table->store_indexes = 1; // пробовал и = 0

netsnmp_table_dataset_add_index(table_set, ASN_UNSIGNED);
netsnmp_table_set_add_default_row(table_set, 2, ASN_OCTET_STR, 0, NULL, 0);
netsnmp_register_table_data_set(netsnmp_create_handler_registration
("alarmTable", alarmTable_handler,
alarmTable_oid, alarmTable_oid_len,
HANDLER_CAN_RWRITE), table_set, NULL);

row = netsnmp_create_table_data_row();
default_num = 1;
netsnmp_table_row_add_index(row, ASN_UNSIGNED, &default_num, sizeof(default_num));
netsnmp_set_row_column(row, 2, ASN_OCTET_STR, "Test1", strlen("Test1"));

netsnmp_table_dataset_add_row(table_set, row);
}

после этого вижу только начиная со второго столбца т.е.
>snmpwalk -v 1 -On -c public 192.168.0.139 1.1.2
.1.1.2.1.2.1 = STRING: "Test1"
а где первый столбец? .1.1.2.1.1.1 = 1 ????

пробовал добавлять
netsnmp_table_set_add_default_row(table_set, 1, ASN_UNSIGNED, 0, NULL, 0);
вообще перестает отвечать на ветку .1.1.2

может кто знает в чем проблема? подскажите пожалуйста

ЗЫ: начал уж думать что data_set не подходит для этого

nvn
всем спасибо, проблема решена
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.