Всем привет!
Не смог найти плагин для контроля состояния postfix-а..
Решил написать сам.
Вот что получилось:#!/bin/bash
#
# Load in standard nagios utils
. /usr/local/nagios/libexec/utils.sh
STATE_OK=0
#STATE_WARNING=1
STATE_CRITICAL=2
#STATE_UNKNOWN=3
#STATE_DEPENDENT=4# executables
find=/usr/bin/find
wc=/usr/bin/wc
awk=/usr/bin/awk
grep=/bin/grep
date=/bin/date
ls=/bin/ls
sed=/bin/sed
# runtime variables
#POSTFIXSTATE="" # on or off
# STATE CheckPOSTFIXSTATE=`/etc/init.d/postfix status | $awk '{print $5}'`
case "$POSTFIXSTATE" in
..running)
echo "POSTFIX $POSTFIXSTATE "
exit 0
;;
*)
echo "POSTFIX $POSRFIXSTATE "
exit 2
;;
esacВ итоге если запускаю ручками - все работает как надо - postfix запущен.
А вот nagios выдает что он не запущен, пишет что статус CRITICAL...
Уж и не знаю что не так.
Кто может помочь?Да и еще... Nagios версии 3.0.5-2.4
Система open suse 11.1
Чем не устраивает стандартный check_smtp?
>Чем не устраивает стандартный check_smtp?Еще его не пробовал (не ставил). А что этот вариант намного проще?
Аааа понял, что вы имели в виду!
Да в принципе для меня пойдет такая проверка но тут еще есть и чисто спортивный интерес...
Например мне нужен еще плагин для контроля агента бэкапа, его скорей всего придеться писать руками. Поэтому разобраться почему данный простейший скрипт не работает - дело чести.Дак почему он не работает как надо, точнее почему nagios получает от скрипта параметр 2, а не ноль (так как postfix запущен)??
>В итоге если запускаю ручками - все работает как надоКак именно проверяли?
>>В итоге если запускаю ручками - все работает как надо
>
>Как именно проверяли?Запускал с консоли /usr/local/nagios/libexec/check_postfix -H localhost и он мне выдает
POSTFIX ..running
Именно это я и подозревал, при неправильном условии сообщение у вас не отличается в обоих случаях, вся разница в коде возврата, а вы его не проверили. Сделайте echo $? после запуска скрипта.
>Именно это я и подозревал, при неправильном условии сообщение у вас не
>отличается в обоих случаях, вся разница в коде возврата, а вы
>его не проверили. Сделайте echo $? после запуска скрипта.Это я проверял в скрипте...
Но еще раз для вас повторил. Запустил скрипт /usr/local/nagios/libexec/check_my_postfix -H localhost
POSTFIX ..running
Дал команду
echo $?
0Как видите на выходе 0, т.е. в понимании nagios ОК.
>[оверквотинг удален]
>
>В итоге если запускаю ручками - все работает как надо - postfix
>запущен.
>А вот nagios выдает что он не запущен, пишет что статус CRITICAL...
>
>Уж и не знаю что не так.
>Кто может помочь?
>
>Да и еще... Nagios версии 3.0.5-2.4
>Система open suse 11.1Попробуйте запустить /etc/init.d/postfix status от простого пользователя (того же nagios), а не от рута и поймёте, почему не работает.
Хех.. я пробовал зайти под nagios, но не знаю пароля :)
Как его узнать?
И вообще какие мои действия, если под его пользователем /etc/init.d/postfix status не будет выполняться?
>Хех.. я пробовал зайти под nagios, но не знаю пароля :)
>Как его узнать?Для su _от рута_ пароль не нужен, возможен заход под пользователем с запрещенным логином. Если использовать -s, то возможно зайти под пользователем с шеллом типа nologin или false
>И вообще какие мои действия, если под его пользователем /etc/init.d/postfix status не
>будет выполняться?Искать другой метод, например такой:
$ ps aux| grep [p]ostfix/master
Ага, кажись понял.. Значит дело не в скрипте - он написан правильно, а в не возможности использования пользователем данной команды в системе...
Спасибо за помощь. Попробую замутить, какие-нибудь другие варианты!
Ну если очень хочется, то можно дать нагиосу sudo на запуск этого стартового скрипта. Может также быть полезным, если захотите автоматически рестартовать, а не только показывать critical.
Спасибо angra, за интересный совет. Я им воспользовался в чисто спортивном интересе... ну и для того, чтобы иметь в будущем возможность перезапускать сервисы с помощью скриптов для других программ.
Предварительно перерыв весь инет на предмет понятия "дать нагиосу sudo на запуск" я сделал вот что:
Добавил строчку в /etc/sudoersnagios ALL=NOPASSWD: /usr/local/nagios/libexec/check_my_postfix
А в commands.cfg запускать скрипт через команду sudo. Вот и все...
Правда насколько это безопасно и есть ли другие способы более безопасные разрешить посторонним прогам запускать свои скрипты я пока не знаю.