реклама на сайте
подробности

 
 
> snmpd + mib + обработчик и все это на Linux, Посоветуйте хороший пример или мануал
Oops
сообщение Aug 19 2010, 15:14
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 28-08-08
Из: г.Омск
Пользователь №: 39 870



Здравствуйте.

Нужно в сжатые сроки ознакомиться с snmpd демоном, разработать MIB базу а также обработчик этой MIB базы.
Посоветуйте хороший мануал или пример.

Есть ПК с Linux например Ubuntu, snmpd демон установил и настроил, благо по этой теме инфа есть в интернете. А вот как создать свою MIB базу и подключить ее к этому snmpd чтото не нашел. Да еще надо же обработчик MIB базы написать, это некая программа которая будет отслеживать изменения в MIB базе и реагировать на них, либо сама будет вносить изменения в эту MIB базу по необходимости. В общем во всем этом мне нужно разобраться, жду советов, полезных ссылок и мануалов.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
denyslb
сообщение Aug 21 2010, 22:51
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 111
Регистрация: 5-05-10
Из: Lebanon, Beirut
Пользователь №: 57 093



Как вариант еще можно использовать:
в snmpd.conf

pass MIBOID PROG
(или еще лучше pass_persists)

В итоге можно указывать какие либо "под"-OID, т.е. скажем если

pass_persist .1.3.6.1.4.1.5835 /bin/passtest --persist

И ваша программа может динамически отвечать на .1.3.6.1.4.1.5835.123 или .1.3.6.1.4.1.5835.5.6.87.2 и т.д.
Go to the top of the page
 
+Quote Post
Oops
сообщение Sep 12 2010, 07:35
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 28-08-08
Из: г.Омск
Пользователь №: 39 870



Здравствуйте!
Сделал следующее, написал скрипт test.sh и подключил его в snmpd.conf.
test.sh:
Код
#!/bin/bash
#
REQUEST_OID="$2"
echo "$REQUEST_OID";
case "$REQUEST_OID" in
    .1.3.6.1.4.1.1958.1.0)
        echo "string"; echo "TransmitDevice"; exit 0;;
    .1.3.6.1.4.1.1958.2.0)
        echo "string"; echo "1.3.6.1.4.1.1958.7.2.2"; exit 0;;
    .1.3.6.1.4.1.1958.3.0)
        echo "integer"; echo "123"; exit 0;;
    .1.3.6.1.4.1.1958.4.0)
        echo "integer"; echo "100"; exit 0;;
    .1.3.6.1.4.1.1958.5.0)
        echo "integer"; echo "2"; exit 0;;
    .1.3.6.1.4.1.1958.6.0)
        echo "integer"; echo "3"; exit 0;;
    *)
        echo "string"; echo "$@"; exit 0;;
    esac
    exit

Добавил в /etc/snmp/snmpd.conf:
Код
syslocation  Ubuntu
syscontact  ”Adminstrator < >”
rocommunity  public 127.0.0.1

### Проверка агента скриптом
pass .1.3.6.1.4.1.1958 /bin/bash /usr/local/bin/test.sh

Перезагрузил snmpd демон.
Делаю запросы на указаные в скрипте OID и получаю ответы:
Код
$ snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.1958.1.0
SNMPv2-SMI::enterprises.1958.1.0 = STRING: "TransmitDevice"
$ snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.1958.2.0
SNMPv2-SMI::enterprises.1958.2.0 = STRING: "1.3.6.1.4.1.1958.7.2.2"
$ snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.1958.3.0
SNMPv2-SMI::enterprises.1958.3.0 = INTEGER: 123
$ snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.1958.4.0
SNMPv2-SMI::enterprises.1958.4.0 = INTEGER: 100
$ snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.1958.5.0
SNMPv2-SMI::enterprises.1958.5.0 = INTEGER: 2

Ответы приходят, скрипт срабатывает.
А можно сделать так чтобы скрипт не только отвечал на GET запросы, но и реагировал на SET запросы. Тоесть пришла команда изменить переменную по OID .1.3.6.1.4.1.1958.5.0 на 3, скрипт анализируя значение переменной реагирует определенным образом (запускает определенную программу, генерирует определенный ответ), если пришла команда изменить пременную на 2 реагирует другим образом и т.д.
Спасибо.

Сообщение отредактировал Oops - Sep 12 2010, 07:39
Go to the top of the page
 
+Quote Post
Olej
сообщение Sep 14 2010, 10:12
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(Oops @ Sep 12 2010, 10:35) *
Ответы приходят, скрипт срабатывает.
А можно сделать так чтобы скрипт не только отвечал на GET запросы, но и реагировал на SET запросы. Тоесть пришла команда изменить переменную по OID .1.3.6.1.4.1.1958.5.0 на 3, скрипт анализируя значение переменной реагирует определенным образом (запускает определенную программу, генерирует определенный ответ), если пришла команда изменить пременную на 2 реагирует другим образом и т.д.

Можно, конечно, сделать и так, но ... это будет как-то уже слишком "через задницу":
- для каждого OID (или группы OID) вам нужно иметь собственную программу, запускаемую из скрипта...
- сама эта программа должна иметь энергонезависимое место хранения для значения OID...

Всё то же самое (но единым стандартным способом) делает AgentX субагент net-snmp.
На сайте проекта net-snmp есть готовые примеры, для скалярных OID там всё до безобразия просто - берём пример, и запускаем (с таблицами OID там посложнее, есть несколько альтернативных примеров).

Go to the top of the page
 
+Quote Post
Oops
сообщение Sep 16 2010, 14:12
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 28-08-08
Из: г.Омск
Пользователь №: 39 870



Цитата(Olej @ Sep 14 2010, 13:12) *
Можно, конечно, сделать и так, но ... это будет как-то уже слишком "через задницу":
- для каждого OID (или группы OID) вам нужно иметь собственную программу, запускаемую из скрипта...
- сама эта программа должна иметь энергонезависимое место хранения для значения OID...

Всё то же самое (но единым стандартным способом) делает AgentX субагент net-snmp.
На сайте проекта net-snmp есть готовые примеры, для скалярных OID там всё до безобразия просто - берём пример, и запускаем (с таблицами OID там посложнее, есть несколько альтернативных примеров).


Спасибо за советы, очень помогает мнение профессионалов. wink.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 08:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016