LINUX.ORG.RU
ФорумAdmin

Snmp+ the dude


0

1

Всех приветствую. Предупрежу заранее, с Линуксом знаком оч. мало , но активно продолжаю знакомиться!) В общем имеется сервер на Centos 5 и ПК с системой мониторинга The Dude. Необходимо считать по Snmp температуру hdd с сервера на centos и вывести ее на The Dude для мониторинга и построения графиков. Штрудил по интернету и вот к чему пришел: 1)Установил Hddtemp , которая мне показывает температуру ЖД на сервере. 2)Теперь эту темп. (вернее ее значение) нужно считать по snmp в The Dude по определенному OID. (The Dude можно вообще отбросить, но если у кого есть конкретные примеры я только ЗА)

В общем Snmpd запущен. В snmpd.conf прописан нужный OID и скрипт для него.(со скриптом еще не разобрался т.к. простейший не выводит нужного значения)

snmpd.conf :

rocommunity public extend .1.3.6.1.3.35514.2.1 test /tmp/test/1.sh

простейший скрипт /tmp/test/1.sh : #!/bin/bash echo Hello World exit

при запросе на этот оид получаем следущее :

[root@R0 test]# snmpwalk -v 1 -c mycontrol localhost .1.3.6.1.3.35514.2.1 SNMPv2-SMI::experimental.35514.2.1.1.1.1.1.0 = INTEGER: 1 SNMPv2-SMI::experimental.35514.2.1.1.1.1.2.1.2.4.116.101.115.116 = STRING: «/tmp/test/1.sh» SNMPv2-SMI::experimental.35514.2.1.1.1.1.2.1.3.4.116.101.115.116 = «» SNMPv2-SMI::experimental.35514.2.1.1.1.1.2.1.4.4.116.101.115.116 = «» SNMPv2-SMI::experimental.35514.2.1.1.1.1.2.1.5.4.116.101.115.116 = INTEGER: 5 SNMPv2-SMI::experimental.35514.2.1.1.1.1.2.1.6.4.116.101.115.116 = INTEGER: 1 SNMPv2-SMI::experimental.35514.2.1.1.1.1.2.1.7.4.116.101.115.116 = INTEGER: 1 SNMPv2-SMI::experimental.35514.2.1.1.1.1.2.1.20.4.116.101.115.116 = INTEGER: 4 SNMPv2-SMI::experimental.35514.2.1.1.1.1.2.1.21.4.116.101.115.116 = INTEGER: 1 SNMPv2-SMI::experimental.35514.2.1.1.1.1.3.1.1.4.116.101.115.116 = STRING: «/tmp/test/1.sh: Permission denied» SNMPv2-SMI::experimental.35514.2.1.1.1.1.3.1.2.4.116.101.115.116 = STRING: «/tmp/test/1.sh: Permission denied» SNMPv2-SMI::experimental.35514.2.1.1.1.1.3.1.3.4.116.101.115.116 = INTEGER: 1 SNMPv2-SMI::experimental.35514.2.1.1.1.1.3.1.4.4.116.101.115.116 = INTEGER: 1 SNMPv2-SMI::experimental.35514.2.1.1.1.1.4.1.2.4.116.101.115.116.1 = STRING: «/tmp/test/1.sh: Permission denied»

Судя по «Permission denied» скрипт не выполняется и его значение не включается в OID. В чем проблема? Как я понимаю, где то не хватает нужных прав. Помогите пожалуйста разобраться, спасибо.

/tmp может быть смонтирована с флагом noexec, что означает невозможность запуска каких-либо программ отсюда. Перемести скрипт в другое место и дай права на запуск chmod +x /opt/bin/test1.sh

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Сменил директорию скрипта, дал соответствующие права

chmod +x /opt/rh/1.sh

Но все тоже самое, что может быть?

Reverse
() автор топика
Ответ на: комментарий от Pinkbyte

Вот , если я правильно понял

[root@R0 opt]# mount
/dev/mapper/vg_r0-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs
(rw,rootcontext=«system_u:object_r:tmpfs_t:s0»)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg_r0-lv_home on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

Reverse
() автор топика

В общем с простым скриптом «Hellow World» разобрался. Проблема была в snmpd.conf

Вместо

extend .1.3.6.1.3.35514.2.1 test /opt/1.sh

надо было дописать

extend .1.3.6.1.3.35514.2.1 test /bin/bash /opt/1.sh

Так все заработало и выводит в списках значений OID со значением «Hellow world»

Теперь проблема с выполнением нужного скрипта, такая же проблема. Содержание скрипта 1.sh :

#!/bin/bash
/usr/sbin/hddtemp /dev/sda

не помогает и просто

#!/bin/bash
hdtemp /dev/sda

вот результат опроса oid :

[root@R0 opt]# snmpwalk -v 1 -c mycontrol localhost .1.3.6.1.3.35514.2.1
SNMPv2-SMI::experimental.35514.2.1.1.0 = INTEGER: 1
SNMPv2-SMI::experimental.35514.2.1.2.1.2.4.116.101.115.116 = >STRING: «/bin/bash»
SNMPv2-SMI::experimental.35514.2.1.2.1.3.4.116.101.115.116 = >STRING: «/opt/1.sh»
SNMPv2-SMI::experimental.35514.2.1.3.1.1.4.116.101.115.116 = >STRING: «/dev/sda: open: Permission denied»
SNMPv2-SMI::experimental.35514.2.1.3.1.2.4.116.101.115.116 = >STRING: «/dev/sda: open: Permission denied
SNMPv2-SMI::experimental.35514.2.1.3.1.3.4.116.101.115.116 = INTEGER: 2
SNMPv2-SMI::experimental.35514.2.1.3.1.4.4.116.101.115.116 = INTEGER: 1
SNMPv2-SMI::experimental.35514.2.1.4.1.2.4.116.101.115.116.1 = STRING: »/dev/sda: open: Permission denied"

Пробовал править и сам snmpd.conf , т.е без скрипта - напрямую задавал команду

строка в snmpd.conf:

extend .1.3.6.1.3.35514.2.1 test usr/bin/hddtemp /dev/sda

результат тот же. Что сейчас может быть?

Reverse
() автор топика
Ответ на: комментарий от Pinkbyte

Да, спасибо, SELinux был включен. Отключил его:

# setenforce 0

Запустил заново опрос OID:

SNMPv2-SMI::experimental.35514.2.1.3.1.1.4.116.101.115.116 = Hex-STRING: 2F 64 65 76 2F 73 64 61 3A 20 57 44 43 20 57 4432 35 30 30 48 48 54 5A 2D 30 34 4E 32 31 56 30 3A 20 33 33 C2 B0 43
SNMPv2-SMI::experimental.35514.2.1.3.1.2.4.116.101.115.116 = Hex-STRING: 2F 64 65 76 2F 73 64 61 3A 20 57 44 43 20 57 44 32 35 30 30 48 48 54 5A 2D 30 34 4E 32 31 56 303A 20 33 33 C2 B0 43
SNMPv2-SMI::experimental.35514.2.1.3.1.3.4.116.101.115.116 = INTEGER: 1
SNMPv2-SMI::experimental.35514.2.1.3.1.4.4.116.101.115.116 = INTEGER: 0
SNMPv2-SMI::experimental.35514.2.1.4.1.2.4.116.101.115.116.1 = Hex-STRING: 2F 64 65 76 2F 73 64 61 3A 20 57 44 43 20 57 4432 35 30 30 48 48 54 5A 2D 30 34 4E 32 31 56 303A 20 33 33 C2 B0 43

В итоге получил вот такой ответ. Я так понимаю нужные мне значения спрятаны в Hex-STRING и мне их необходимо перевести в INTEGER. Потому что просто выполнение макроса выводит вот такую информацию, которая несколько отличается))):

/dev/sda: WDC WD2500HHTZ-04N21V0: 33°C

Мне из этого необходимо только значение 33.

Действительно ли мне необходимо перевести эти значения в INTEGER, и если да, поделитесь как это реализовать. Или вообще проблема в другом?

Reverse
() автор топика
Ответ на: комментарий от Reverse

http://www.string-functions.com/hex-string.aspx

говорит что

2F 64 65 76 2F 73 64 61 3A 20 57 44 43 20 57 4432 35 30 30 48 48 54 5A 2D 30 34 4E 32 31 56 30 3A 20 33 33 C2 B0 43

равно:

/dev/sda: WDC WD2500HHTZ-04N21V0: 33°C

знак градуса побился правда, но может это проблема конвертера...

Нагуглить алгоритм перевода в интернетах я думаю не составит труда

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Проще возможно даже будет изначально сувать в snmp обрезанную строку типа:

[root@warsaw ~]# hddtemp /dev/sda
/dev/sda: WDC WD3200AAKX-00ERMA0: 41°C
[root@warsaw ~]# hddtemp /dev/sda | awk '{print $4}' | cut -b1,2
41

BOOBLIK ★★★
()
Ответ на: комментарий от BOOBLIK

ну это уже автору виднее, но да, если нужна только температура - так проще

Pinkbyte ★★★★★
()
Ответ на: комментарий от BOOBLIK

Спасибо всем огромное! Все получилось. С выводом конкретного значения из ненужной информации еще не разбирался, но команда очень помогла. Сразу выдает значение в STRING формате, при опросе OID'a, и The Dude прекрасно его понял( не пришлось в INTEGER переводить).

Reverse
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.