Monitoring Adaptec RAID controller on Linux

Переписал скрипт для мониторинга Adaptec RAID контролера в Linux, чтобы в случае проблем отсылал сообщение о проблеме на E-mail.

Скрипт мониторинга RAID контролера Adaptec с аргументом mail запускается в кроне каждую минуту и проверяет на наличии ошибок, в случае если ошибка больше 0 отправляется на почту.

Если скрипт запустить с аргументом log, то увидим статус Adaptec RAID контроллера (/var/script/raid/adaptec log).

0-59/5 * * * *  /var/script/raid/adaptec mail
#!/bin/bash
email=mail@domain.ru
ERROR_COUNT=0
LOG="/tmp/aacraid.log"
arcconf GETCONFIG 1 > $LOG
if [ "$?" -ne "0" ]
then
        ERROR_STR="Cannot write to log"
        let "ERROR_COUNT += 1"
fi
CONTROLLER=`cat $LOG | grep -E 'Controller Status' | awk '{ print $4 }'`
#BATTERY=`cat $LOG | grep -A 2 'Controller Battery Information' | grep Status | awk '{print $3}'`
LOGICAL_DEVICE=`cat $LOG | grep -E 'Status of logical device' | awk '{print $6}'`
PHISICAL_DEVICE=`cat $LOG | grep -A 2 -E 'Device #[0-9]' | grep State | awk '{print $3}'`
get_status() {
while read line ; do
if [ -n "$line" ]
then
        if [ "$line" = "Optimal" ] || [ "$line" = "Online" ] || [ "$line" = "Global" ]
                then
                        echo "Test result is OK" > /dev/null
                else
                        #echo "Test result is FAIL"
                        ERROR_STR="Some poblem with ACC-raid. Please check $LOG file"
                        let "ERROR_COUNT += 1"
                fi
        fi
done <<< "$1"
}
get_status "${CONTROLLER}"
#get_status "${BATTERY}"
get_status "${LOGICAL_DEVICE}"
get_status "${PHISICAL_DEVICE}"

if [ -n "$1" ]
    then
    if [ "$1" = "log" ]
        then
            echo ${ERROR_STR}
            echo "Controller Status is ${CONTROLLER}"
    #        echo "Controller Battery Status is ${BATTERY}"
            echo "Status of LDs are ${LOGICAL_DEVICE}"
            echo "Status of PDs are:" && cat $LOG | grep -A 2 -E 'Device #[0-9]'

    fi

    if [ "$1" = "mail" ]
        then

        if [ "${ERROR_COUNT}" -gt 0  ]
        then
            echo "${ERROR_STR} \r Controller Status is ${CONTROLLER}" | mail -s "Adaptec fail" $email
        fi
    fi

else
    echo ${ERROR_COUNT}
fi
Tags:
  1. Добрый день.

    Скрипт постоянно присылает на почту такое сообщение: Cannot write to log \r Controller Status is. Причём запускается его выполнение от root, доступ к файлу полый. Признаться не понимаю в чём проблема.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *