Стартовая страница › Форумы › Понять, как работает ПО › Вопрос по драйверу SNMP
- В этой теме 11 ответов, 4 участника, последнее обновление 2 года, 5 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
01.04.2024 в 20:21 #31813
sergyltdУчастникЗдравствуйте
Завершил ввод мибов, попробовал, и понял все не так. Не совсем понятна сама идея — как должны быть организованы переменные.Без группы не получается. С группой не работает. Я организовывал так. Группу называл просто как мне нравится. Поля для ввода ОИДа группы все равно нет. А переменные уже по честному — с ОИДом. Картинка ниже
https://disk.yandex.ru/i/3tr-8uIYhGxI4Q Картинка виндовз админ переменные.
Понятно что не работает. Посмотрел в лог. Коммуникатор запрашивает группу, (судя по логу) и пытается получить переменные. Поведение напоминает snmpwalk.
https://disk.yandex.ru/i/xZGRK2RuoLbJUw Картинка лога линии.
Понятно что переменные не идут. Если запрашивать группу — должен быть ОИД группы. При этом если запрашивать snmpgetnext то получаем первый элемент в группе. Или надо вводить ОИД конкретной переменной. Если пользовать snmpwalk, то опять необходим ОИД группы. По группе получим ВСЕ элемеенты в этой группе.
https://disk.yandex.ru/i/T-xglmPHn2Yq3A Картинка работы из командной строки.
Я к тому, что либо запрос надо делать по каждой переменной (а это не так) либо надо передавать ОИД группы мибов. А это не знаю как сделать.И второй вопрос. Я по честному прописываю длину строки из мибов. А он поделил цифру на несколько каналов. Длинна 31 — получилось 4 канала. И что с ними делать? Как вывести строку мнемосхему? Или в таблицу? Там же 1 канал указывается! И как складывать эту строку из 4 каналов?
01.04.2024 в 21:24 #31814Romiros
Участник1. Не знаю как сейчас, но раньше в драйвере snmp было ограничение на количество переменных в группе. Не более 10, если мне не изменяет память. Похоже это связано с какими-то ограничениями используемой библиотеки Snmp.
2. Один канал вмещает не более 8 символов ASCII или 4 Unicode, поэтому автоматом у вас и создаются 4 канала. Далее ВЫ сможете вывести это на схему или в таблицу, я выводил и длиннее.01.04.2024 в 21:44 #31815
sergyltdУчастникСо строками почти понял.
@Romiros Далее ВЫ сможете вывести это на схему или в таблицу, я выводил и длиннее.
А как? Вот моя строка каналы 51-54. Предположим динамическая строка в схеме. В свойствах канал. Пишу 51 и все? Или где-то Val(51)+Val(52)…….?
—————
А вот по драйверу совсем не понятно. Если драйвер использует snmpwalk, То ему надо передать ОИД группы. Но группу делаю не я, а производитель. Написал он в группе 25 ОИДов значит ответ на запрос будет содержать 25 переменных.
А как заставить драйвер использовать snmpgetnext непонятно совершенно.01.04.2024 в 22:43 #3181701.04.2024 в 23:06 #31818
sergyltdУчастникДык. Вот лог линии
2024-04-01 22:58:19 Session with the device [1] Eaton
Request variable group «.1.3.6.1.4.1.534.1.1»
Receive xupsIdentManufacturer = NoSuchObject (NoSuchObject)
Receive xupsIdentModel = NoSuchObject (NoSuchObject)
Receive xupsIdentSoftwareVersion = NoSuchObject (NoSuchObject)
Receive xupsIdentOemCode = NoSuchObject (NoSuchObject)
Receive xupsIdentPartNumber = NoSuchObject (NoSuchObject)
Receive xupsIdentSerialNumber = NoSuchObject (NoSuchObject)
OK
Группу я переименовал в ОИД. Переменные назвал как в мибах. Запрашивает группу, — пытается получить переменные. Почему нет объекта непонятно.
Наверное что-то не так сделал. Только что?01.04.2024 в 23:10 #31819
manjey73Участникв смысле в драйвере можно прописать OID самой переменной, а не группы.
И точки первоначальные уберитепример xml устройства, правда из 5-й версии, но думаю мало что поменялось
<VarGroups> <VarGroup name="Voltage"> <Variable name="InVoltage_L1" oid="1.3.6.1.4.1.2254.2.4.4.3.0" isBits="false" /> <Variable name="InVoltage_L2" oid="1.3.6.1.4.1.2254.2.4.4.6.0" isBits="false" /> <Variable name="InVoltage_L3" oid="1.3.6.1.4.1.2254.2.4.4.9.0" isBits="false" /> </VarGroup> </VarGroups>-
Ответ изменён 2 года, 5 месяцев назад пользователем
manjey73.
01.04.2024 в 23:46 #31821
sergyltdУчастникВот. Спасибо. Завтра попробую. Может точки лишние, очень вероятно. Они где нужны, а где не принимаются. Спасибо! Попробую.
02.04.2024 в 06:26 #31822Romiros
УчастникА как? Вот моя строка каналы 51-54. Предположим динамическая строка в схеме. В свойствах канал. Пишу 51 и все? Или где-то Val(51)+Val(52)…….?
51 и всё, если всё правильно сделано.
02.04.2024 в 14:38 #31840
sergyltdУчастникНе помогает. Точки тут ни при чем.
Но у меня конфиг немного по другому построен. Это не я строил — это админ построил такой. Я вводил данные в форму.<DeviceOptions> <ReadCommunity>8B911608F03730018E83DD82C9D59C9A</ReadCommunity> <WriteCommunity>F7BAE359F2121A511A04BF83C8F38C06</WriteCommunity> <SnmpVersion>2</SnmpVersion> </DeviceOptions> <VarGroups> <VarGroup active="true" name="UPSIdent"> <Variable name=" xupsIdentManufacturer" tagCode="manuf" oid="1.3.6.1.4.1.534.1.1.1" dataType="ASCII" dataLen="31" /> <Variable name=" xupsIdentModel" tagCode="model" oid="1.3.6.1.4.1.534.1.1.2" dataType="ASCII" dataLen="63" /> <Variable name=" xupsIdentSoftwareVersion" tagCode="swV" oid="1.3.6.1.4.1.534.1.1.3" dataType="ASCII" dataLen="63" /> <Variable name=" xupsIdentOemCode" tagCode="oem" oid="1.3.6.1.4.1.534.1.1.4" dataType="Int64" /> <Variable name=" xupsIdentPartNumber" tagCode="PN" oid="1.3.6.1.4.1.534.1.1.5" dataType="ASCII" dataLen="31" /> <Variable name=" xupsIdentSerialNumber" tagCode="SN" oid="1.3.6.1.4.1.534.1.1.6" dataType="ASCII" dataLen="31" /> </VarGroup>У меня есть тип и длинна.
Ну так не хочется в исходники лезть…..((: Видимо без этого не понять.02.04.2024 в 15:30 #31850
MikhailМодераторНа всякий случай пример, который опрашивает SNMP-сервер встроенный в Windows. Ссылка
Работа драйвера зависит от используемой библиотеки SharpSnmpLib.02.04.2024 в 17:06 #31859
sergyltdУчастникСпасибо за помощь! Получилось. Теперь осталось все переделать.
Причина очень простая — для snmpget индекс на конце штука обязательная. Чаще всего это .0 иногда другой индекс. Для других команд индекс необязателен. Смутило то, что в логе линии записи — запрос группы — получение переменной …получение переменной. snmpget не может запрашивать группу, поэтому не думал, что используется эта команда.
Проще говоря во все ОИДы, если они не представляют индексированную таблицу, надо в конце добавлять .0 А если представляют таблицу, то требуемый индекс.
Еще раз спасибо за помощь — без ВАС я бы подох разбираясь.03.04.2024 в 12:57 #31874
MikhailМодераторСпасибо, что написали о результате, эта информация многим пригодится.
-
Ответ изменён 2 года, 5 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.