свои скрипты в snmpd.conf

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
plazmagod
рядовой
Сообщения: 30
Зарегистрирован: 2007-04-04 14:15:01

свои скрипты в snmpd.conf

Непрочитанное сообщение plazmagod » 2009-01-02 18:45:57

есть желание запустить свой скрипт как описано в snmpd.conf.example

Код: Выделить всё

###############################################################################
# Extensible sections.
#

# This alleviates the multiple line output problem found in the
# previous executable mib by placing each mib in its own mib table:

# Run a shell script containing:
#
# #!/bin/sh
# echo hello world
# echo hi there
# exit 35
#
# Note:  this has been specifically commented out to prevent
# accidental security holes due to someone else on your system writing
# a /tmp/shtest before you do.  Uncomment to use it.
#
# exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest

# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.50
# enterprises.ucdavis.50.1.1 = 1
# enterprises.ucdavis.50.2.1 = "shelltest"
# enterprises.ucdavis.50.3.1 = "/bin/sh /tmp/shtest"
# enterprises.ucdavis.50.100.1 = 35
# enterprises.ucdavis.50.101.1 = "hello world."
# enterprises.ucdavis.50.101.2 = "hi there."
# enterprises.ucdavis.50.102.1 = 0

# Now the Output has grown to two lines, and we can see the 'hi
# there.' output as the second line from our shell script.
#
# Note that you must alter the mib.txt file to be correct if you want
# the .50.* outputs above to change to reasonable text descriptions.
пишу в /usr/local/etc/snmp/snmpd.conf

Код: Выделить всё

exec .1.3.6.1.4.1.2021.50 echotest /bin/echo hello world
рестартую snmpd, пробую

Код: Выделить всё

snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.50
и ничего :( . В example пишут надо править mib файл. Догадываюсь по цифрам, что надо править /usr/local/share/snmp/mibs/UCD-SNMP-MIB.txt, а вот как его править понять не могу.
У кого свои скрипты работают подскажите как?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
gloom
лейтенант
Сообщения: 738
Зарегистрирован: 2008-03-13 16:29:12
Откуда: UA

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение gloom » 2009-02-03 12:00:13

начиная с какой-то версии snmpd, в конфигурационном файле для выполнения внешних скриптов надо писать не "exec" или "pass", а "extend"

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение terminus » 2009-02-03 12:26:28

В последнее время, все резко озаботились экспортом вывода скриптов через snmp ;-) Это неспроста...

Код: Выделить всё

extend .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Гость
проходил мимо

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение Гость » 2009-02-03 13:32:15

Насчёт extend - надо попробовать.

Сейчас пока работаю таким образом:
1. На стороне сервера

Код: Выделить всё

      snmpd.conf :
      exec echotest /tmp/echotest 

Код: Выделить всё

      /tmp/echotest :
      #!/bin/sh
      echo "Hello world" 
2. С клиента смотрю

Код: Выделить всё

$ snmpwalk -On -v2c -c GoUse <IP-ADDRESS> 1.3.6.1.4.1.2021.8.1
.1.3.6.1.4.1.2021.8.1.1.1 = INTEGER: 1
.1.3.6.1.4.1.2021.8.1.2.1 = STRING: echotest
.1.3.6.1.4.1.2021.8.1.3.1 = STRING: /tmp/echotest
.1.3.6.1.4.1.2021.8.1.100.1 = INTEGER: 0
.1.3.6.1.4.1.2021.8.1.101.1 = STRING: Hello world
.1.3.6.1.4.1.2021.8.1.102.1 = INTEGER: noError(0)
.1.3.6.1.4.1.2021.8.1.103.1 = STRING:
$
Хочу заметить, что таким образом в SNMP вывод идёт только первой строчки скрипта и она ограничена размером в 4096 Байт. Практика показала, что если информации больше, чем 4 Кб не будет, то ради скорости лучше использовать однострочный вывод информации, дабы единым snmpget`ом её вытащить.

как пример - скрипт для top
1. Сторона сервера

Код: Выделить всё

snmpd.conf :
exec topproc /tmp/topproc 

Код: Выделить всё

#!/bin/sh
#topproc
top -b | sed -e '1,7d' -e '23,$d' -e 's/B //' | echo -n `awk '{print $12,$9,$10,$2":"}'` | sed 's/: /:/g'
2. Сторона клиента

Код: Выделить всё

#!/bin/sh
#snmp_top
snmpget -v2c -c $SNMPCOMMUNITY -Oqv $HOSTNAME .1.3.6.1.4.1.2021.8.1.101.2 | sed 's/:/\
/g' 

plazmagod
рядовой
Сообщения: 30
Зарегистрирован: 2007-04-04 14:15:01

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение plazmagod » 2009-02-03 13:36:20

terminus писал(а):В последнее время, все резко озаботились экспортом вывода скриптов через snmp Это неспроста...
ИМХО, если до этого руки доходят - значит более серъёзные проблемы уже решены и лень двигает технический прогресс всё дальше и дальше. :smile:

P.S. Предыдущий пост мой.

BIT
проходил мимо

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение BIT » 2009-03-30 21:12:48

А если мы допустим в скрипте делаем
echo 78

А snmpget нам показывает это как STRING: "78"
как сделать чтобы он видел INTEGER ?

plazmagod
рядовой
Сообщения: 30
Зарегистрирован: 2007-04-04 14:15:01

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение plazmagod » 2009-03-30 21:58:19

echo 78 - и выдаст 78, что тут думать. Разверни вопрос. Что получаешь на входе? Что желаешь на выходе?

BIT
проходил мимо

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение BIT » 2009-03-30 22:04:52

Сервер snmpd.conf(вырезка):
extend .1.3.6.1.4.1.2021.8 openvz /usr/share/snmp/openvz.sh

openvz.sh:
Text=`cat /proc/user_beancounters`

# Kmemsize
echo $Text | cut -d' ' -f12
echo $Text | cut -d' ' -f13
echo $Text | cut -d' ' -f14
echo $Text | cut -d' ' -f16
.............

--------------------------------------------------------
Клиент:
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.1 = STRING: "2456939"
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.2 = STRING: "10047285"
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.3 = STRING: "11055923"
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.4 = STRING: "0"
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.5 = STRING: "0"
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.6 = STRING: "0"
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.7 = STRING: "2560"
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.8 = STRING: "0"
.........................

А нужно чтобы:
.iso.org.dod.internet.private.enterprises.ucdavis.extTable.4.1.2.6.111.112.101.110.118.122.1 = INTEGER: 2456939

Спасибо за внимание :)

plazmagod
рядовой
Сообщения: 30
Зарегистрирован: 2007-04-04 14:15:01

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение plazmagod » 2009-03-31 13:48:33

Ты уверен, что на клиенте используешь snmpget ?

BIT
рядовой
Сообщения: 14
Зарегистрирован: 2009-03-31 6:28:01

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение BIT » 2009-04-01 11:14:09

Вопрос впринципе решен, не стал изобретать велосипед, а на клиенте все через отдельный скрипт оправшиваю :smile:

plazmagod
рядовой
Сообщения: 30
Зарегистрирован: 2007-04-04 14:15:01

Re: свои скрипты в snmpd.conf

Непрочитанное сообщение plazmagod » 2009-04-01 12:52:12

Мне также пришлось делать. Более того, чтобы ускорить обмен по сети - на сервере все данные сворачиваю в одну строчку, а на клиенте разворачиваю со строчки в табличку. Один snmpget может 4Кб инфы перенести за заход.