Вопрос по драйверу SNMP

Помечено: , ,

Просмотр 12 сообщений - с 1 по 12 (из 12 всего)
  • Автор
    Записи
  • #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 каналов?

    #31814
    Romiros
    Участник

    1. Не знаю как сейчас, но раньше в драйвере snmp было ограничение на количество переменных в группе. Не более 10, если мне не изменяет память. Похоже это связано с какими-то ограничениями используемой библиотеки Snmp.
    2. Один канал вмещает не более 8 символов ASCII или 4 Unicode, поэтому автоматом у вас и создаются 4 канала. Далее ВЫ сможете вывести это на схему или в таблицу, я выводил и длиннее.

    #31815
    sergyltd
    Участник

    Со строками почти понял.

    @Romiros Далее ВЫ сможете вывести это на схему или в таблицу, я выводил и длиннее.

    А как? Вот моя строка каналы 51-54. Предположим динамическая строка в схеме. В свойствах канал. Пишу 51 и все? Или где-то Val(51)+Val(52)…….?
    —————
    А вот по драйверу совсем не понятно. Если драйвер использует snmpwalk, То ему надо передать ОИД группы. Но группу делаю не я, а производитель. Написал он в группе 25 ОИДов значит ответ на запрос будет содержать 25 переменных.
    А как заставить драйвер использовать snmpgetnext непонятно совершенно.

    #31817
    manjey73
    Участник

    @sergyltd насколько помню драйвер не читает группы, надо каждый OID указывать.

    #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
    Группу я переименовал в ОИД. Переменные назвал как в мибах. Запрашивает группу, — пытается получить переменные. Почему нет объекта непонятно.
    Наверное что-то не так сделал. Только что?

    #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.
    #31821
    sergyltd
    Участник

    Вот. Спасибо. Завтра попробую. Может точки лишние, очень вероятно. Они где нужны, а где не принимаются. Спасибо! Попробую.

    #31822
    Romiros
    Участник

    А как? Вот моя строка каналы 51-54. Предположим динамическая строка в схеме. В свойствах канал. Пишу 51 и все? Или где-то Val(51)+Val(52)…….?

    51 и всё, если всё правильно сделано.

    #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>

    У меня есть тип и длинна.
    Ну так не хочется в исходники лезть…..((: Видимо без этого не понять.

    #31850
    Mikhail
    Модератор

    На всякий случай пример, который опрашивает SNMP-сервер встроенный в Windows. Ссылка
    Работа драйвера зависит от используемой библиотеки SharpSnmpLib.

    #31859
    sergyltd
    Участник

    Спасибо за помощь! Получилось. Теперь осталось все переделать.
    Причина очень простая — для snmpget индекс на конце штука обязательная. Чаще всего это .0 иногда другой индекс. Для других команд индекс необязателен. Смутило то, что в логе линии записи — запрос группы — получение переменной …получение переменной. snmpget не может запрашивать группу, поэтому не думал, что используется эта команда.
    Проще говоря во все ОИДы, если они не представляют индексированную таблицу, надо в конце добавлять .0 А если представляют таблицу, то требуемый индекс.
    Еще раз спасибо за помощь — без ВАС я бы подох разбираясь.

    #31874
    Mikhail
    Модератор

    Спасибо, что написали о результате, эта информация многим пригодится.

Просмотр 12 сообщений - с 1 по 12 (из 12 всего)
  • Для ответа в этой теме необходимо авторизоваться.