faq обучение настройка
Текущее время: Вс июл 27, 2025 16:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: программирование по snmp
СообщениеДобавлено: Пт июл 03, 2009 07:18 
Не в сети

Зарегистрирован: Пт июн 05, 2009 06:56
Сообщений: 25
Откуда: Миасс
Дано:
коммутатор des-3526

Необходимо:
программно формировать access-листы для организации подключения-отключения дополнительных услуг

Реализовано:
с помощью библиотеки net-snmp на c++ записываются данные в таблицу .1.3.6.1.4.1.171.12.9.2.2.1 (пока экспериментирую с профилем 90, маска под него внесена).

Проблема:
записываю 22 записи - для каждого порта коммутатора в соответсвующую таблицу, и т.к. в доке по мибам написано, что поле
swACLIpRuleProtocol только для чтения, в него соответсвенно ничего не пишу. Но для первой записи почему-то в это поле подставляется 4 (tcp), а не 1 (none), для остальных записей подставляется 1(none).
Это с чем может быть связано?

Запись осуществляется в 2 этапа: сначала удаляется соотвественный индекс через rowstatus=6, потом добавляется новая запись через rowstatus=4 и только поля, которые имеют нормальные значения (пустые значения не записываются, и не записываются значения для целых -1)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: программирование по snmp
СообщениеДобавлено: Пт июл 03, 2009 09:20 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Приведите, пожалуйста, примеры команд, которые используете.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 10:15 
Не в сети

Зарегистрирован: Пт июн 05, 2009 06:56
Сообщений: 25
Откуда: Миасс
привести пример с++-исходника? Я не пользуюсь утилитами для записи данных, использую возможности библиотеки net-snmp напрямую из программы управлять коммутаторами.
ну типа
...
SOCK_STARTUP;
ss=snmp_open(&session);
...
snmp_parse_oid(переменная.mib.c_str(),name,&name_len);
...
snmp_varlist_add_variable(&val,name,name_len,переменная.type,(u_char *)&tmp,переменная.length);
...
status=netsnmp_query_set(val,ss);
snmp_free_varbind(val);
...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 10:50 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Пт янв 21, 2005 11:52
Сообщений: 11212
Откуда: D-Link, Moscow
Имелось ввиду последовательность snmp команд, которые Вы вводили.

_________________
С уважением,
Бигаров Руслан.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 13:37 
Не в сети

Зарегистрирован: Пт июн 05, 2009 06:56
Сообщений: 25
Откуда: Миасс
вот сейчас проверил и через утилиты, тоже ставит почему-то в протокол именно 4
вот команды
snmpset -v2c -c private 10.0.4.119 1.3.6.1.4.1.171.12.9.2.2.1.22.90.65501 i 6

snmpset -v2c -c private 10.0.4.119 1.3.6.1.4.1.171.12.9.2.2.1.4.90.65501 a 0.0.0.0 1.3.6.1.4.1.171.12.9.2.2.1.5.90.65501 a 0.0.0.0 1.3.6.1.4.1.171.12.9.2.2.1.12.90.65501 i 0 1.3.6.1.4.1.171.12.9.2.2.1.15.90.65501 i 2 1.3.6.1.4.1.171.12.9.2.2.1.17.90.65501 i 2 1.3.6.1.4.1.171.12.9.2.2.1.18.90.65501 i 2 1.3.6.1.4.1.171.12.9.2.2.1.20.90.65501 i 2 1.3.6.1.4.1.171.12.9.2.2.1.21.90.65501 x 80000000 1.3.6.1.4.1.171.12.9.2.2.1.22.90.65501 i 4

snmpget -v2c -c private 10.0.4.119 1.3.6.1.4.1.171.12.9.2.2.1.7.90.65501

причем в команде создания строки инициализируются значения, которые необязательны, но они такие делаются по умолчанию.
если не ставить значений 12,15,17,18, тогда в поле protocol ставится 1.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 13:40 
Не в сети

Зарегистрирован: Пт июн 05, 2009 06:56
Сообщений: 25
Откуда: Миасс
сейчас проверил, если ставишь 12й параметр - флаги - и инициализируешь его в 0, тогда почему-то протокол автоматически пишется 4 (tcp).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 14:11 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Я протестирую ситуацию на тестовом стенде и по результатам сообщу Вам


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 03, 2009 15:21 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Дело в том, что в документации, которую я Вам высылал ранее, из описания ACL IP Rule Flag Bits: "A value which indicates the set of TCP flags that this entity may potentially offers. The value is a sum. This sum initially takes the value zero, Then, for each flag, L, in the range 1 through 6, that this node performs transactions for, 2 raised to (L - 1) is added to the sum."

Соответственно, изменение этого параметра тянет за собой установку значения 4 (tcp).
Попробуйте, составить запрос в соответствии с командами, которые я рекомендовал Вам ранее. С ними проблем нет:

snmpset -v2c -c private 192.168.0.100 1.3.6.1.4.1.171.12.9.2.2.1.4.90.65522 a 0.0.0.0 1.3.6.1.4.1.171.12.9.2.2.1.5.90.65522 a 0.0.0.0 1.3.6.1.4.1.171.12.9.2.2.1.20.90.65522 i 2 1.3.6.1.4.1.171.12.9.2.2.1.21.90.65522 x 00000400 1.3.6.1.4.1.171.12.9.2.2.1.22.90.65522 i 4


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 06, 2009 07:08 
Не в сети

Зарегистрирован: Пт июн 05, 2009 06:56
Сообщений: 25
Откуда: Миасс
уже сделал изменения, что если считываю из конфигурации в этом поле 0, тогда его не инициализирую вообще. Просто не совсем понятна логика, если неинициализируемые поля становятся в -1 (я так понял, что для integer - это неопределённое значение), это почему-то становится в 0, и если в него писать 0, изменяются установки в других полях.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 06, 2009 07:17 
Не в сети

Зарегистрирован: Пт июн 05, 2009 06:56
Сообщений: 25
Откуда: Миасс
а еще вопрос, есть возможность почистить сразу всю таблицу, а не считывать ее и чистить по частям?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 06, 2009 10:08 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
shurakrkn писал(а):
а еще вопрос, есть возможность почистить сразу всю таблицу, а не считывать ее и чистить по частям?

Удаление осуществляется аналогичным образом, за исключением того, что взамен значения 4 (CreateAndGo) необходимо использовать значение 6 (destroy).
Небольшой пример для ACL IP:

#Создаем профиль
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.171.12.9.1.2.1.3.10 i 4
1.3.6.1.4.1.171.12.9.1.2.1.4.10 a 255.255.255.255
1.3.6.1.4.1.171.12.9.1.2.1.5.10 a 255.255.255.255
1.3.6.1.4.1.171.12.9.1.2.1.19.10 i 4

#Создаем access_id
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.171.12.9.2.2.1.4.10.20 a
192.168.0.20 1.3.6.1.4.1.171.12.9.2.2.1.5.10.20 a 192.168.0.30
1.3.6.1.4.1.171.12.9.2.2.1.20.10.20 i 1
1.3.6.1.4.1.171.12.9.2.2.1.21.10.20 x 00020000
1.3.6.1.4.1.171.12.9.2.2.1.22.10.20 i 4

#Удаляем access_id
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.171.12.9.2.2.1.22.10.20 i 6

#Удаляем profile
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.171.12.9.1.2.1.19.10 i 6


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 06, 2009 11:29 
Не в сети

Зарегистрирован: Пт июн 05, 2009 06:56
Сообщений: 25
Откуда: Миасс
вы не поняли вопроса, можно почистить одной командой всю таблицу?????, например все маски за раз. В вашем случае вы сначала должны считать, какие маски есть, и только потом выборочно каждую удалять.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 06, 2009 13:12 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Можно либо по отдельности каждый access_id либо все ассess_id, но вместе с их профилем, как указано выше.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 06, 2009 13:19 
Не в сети

Зарегистрирован: Пт июн 05, 2009 06:56
Сообщений: 25
Откуда: Миасс
Понятно, жаль.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 06, 2009 13:26 
Не в сети

Зарегистрирован: Пт май 05, 2006 16:52
Сообщений: 4181
Откуда: default
не вижу проблемы:
если нужно очистить всё - считывайте ID всех профилей и удалите, их не может быть более 9-10, операция займёт совсем немного времени, секунды 3.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB