Здравствуйте!
Сделал следующее, написал скрипт 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