Назад | Перейти на главную страницу

сервер nagios не читает правильный код выхода

привет мой скрипт не показывает правильный код выхода на стороне сервера.

SERVICENAME=`/etc/init.d/$NAME status| awk '{print $NF}' | sed 's/\.//g' | grep -i running | sed 's/\s//g'|tail -n 1`

if [ "${SERVICENAME}" == "Running" -o "${SERVICENAME}" == "running" ]
then
        STATUS="OK";
        EXITSTAT=0;
        elif [ "${SERVICENAME}" != "Running" -o "${SERVICENAME}" != "running" ]
        then
                STATUS="CRITICAL";
                EXITSTAT=2;
        else
                STATUS="WARNING";
                EXITSTAT=1;
        fi

echo "$STATUS- Service $NAME $EXITSTAT |Service $NAME=0;2;3"
exit $EXITSTAT

Я вижу ошибки в вашем скрипте. Если вы хотите присвоить SERVICENAME значение команды, вы должны добавить обратные кавычки до и после:

SERVICENAME=`/etc/init.d/$NAME status| awk '{print $NF}' | sed 's/\.//g' | grep -i unning | sed 's/\s//g'|tail -n 1`

Между if и then у вас должна быть точка с запятой:

if [ "${SERVICENAME}" == "Running" -o "${SERVICENAME}" == "running" ]; then STATUS="OK"; EXITSTAT=0; elif [ "${SERVICENAME}" != "Running" -o "${SERVICENAME}" != "running" ]; then STATUS="CRITICAL"; EXITSTAT=2; else STATUS="WARNING"; EXITSTAT=1; fi

И вуаля:

[root@test ~]# ./script
OK- Service slapd 0 |Service slapd=0;2;3 exit 0