Пятница
19.04.2024
20:38


Форма входа


Приветствую Вас Гость | RSS
Статьи по ORACLE, PL/SQL, Java и немного по SHELL (BASH),...
Главная Каталог статей Регистрация Вход
Главная » Статьи » Shell (Bash) » Shell (Bash)

Предупреждение о достижении критического значения в работе ОС

#!/bin/bash 

 

#При переносе сценария, необходимо изменить значение следующих переменных:

# XLOG, FILE_LA

 

#Папка расположения вспомогательной информации

XLOG=/home/akarak/xlog

#Файл содержимое которого проверяем

FILE_LA=/home/akarak/proc/loadavg

#Файл для отправки

FILE_ALARM=alarm.txt

#Файл содержит тело (содержимое) письма

FILE_BODY=mail_body.txt

#Адреса рассылки, можно перечислить через ","

MAIL_TO=имя@домен.ru

#Текучая дата

DAT_BEGIN=`date +%d-%m-%Y`

 

#Признак отправки письма

R0=`find $XLOG -name "MAIL_FLAG"`

#-z строка "пустая"

if  [ -z "$R0" ] ; then #Если файла нет, то надо его создать

            MAIL_FLAG=0

            echo $MAIL_FLAG > $XLOG/MAIL_FLAG

fi

 

#Если загрузка превышант 20%, то создаем файл, на основании файла loadavg

awk '$1 >= 20' $FILE_LA > $XLOG/$FILE_ALARM

 

#ищем что файл alarm.txt не пустой

R1=`find $XLOG -name "$FILE_ALARM" -size 0`

read MAIL_FLAG < $XLOG/MAIL_FLAG

# -z строка "пустая"

# -eq равно

if  [ -z "$R1" ] && [ $MAIL_FLAG -eq  0 ] ;  then

#Если файл не пустой и письмо не отправлено

            echo "send letter"

            # -a прикрепляемый файл

            # -s "Тема письма"

            mutt -a $XLOG/$FILE_ALARM -s "Тема письма $DAT_BEGIN" $MAIL_TO < $XLOG/$FILE_BODY

            MAIL_FLAG=1 #Ставим признак отправки письма

            echo $MAIL_FLAG > $XLOG/MAIL_FLAG

fi

 

R2=`awk  '$1 < 20' $FILE_LA`

# -n строка не "пустая"

if [ -n "$R2" ] && [ $MAIL_FLAG -eq 1 ] ;  then

 #Если загрузка нормальная (переменная $R2 пустая) и письмо отправлено

            echo "delete alarm.txt"

            rm $XLOG/$FILE_ALARM

            MAIL_FLAG=0 #Ставим признак отправки письма

            echo $MAIL_FLAG > $XLOG/MAIL_FLAG

fi

 

exit 0

 

Логика работы

(Если загрузка превышает, допустимую, отправляется письмо. И больше писем не отправлять, пока ситуация не стабилизируется)

 

1. При первом запуске сценария создается MAIL_FLAG

2. Проверяется содержимое файла $FILE_LA (пример содержимого: 29.09 0.13 0.11 3/383 13538, где 29.09 – это % загрузки), если % загрузки >= 20, то содержимое файла $FILE_ALARM становится НЕ пустым

3. Далее идет проверка [ -z "$R1" ] && [ $MAIL_FLAG -eq  0 ], если файл не пустой и письмо не отправлено, то отправляем письмо адресатам $MAIL_TO и ставим признак отправки письма MAIL_FLAG=1.

4.Далее идет проверка [ -n "$R2" ] && [ $MAIL_FLAG -eq 1 ], если загрузка нормальная (переменная $R2 пустая) и письмо отправлено, то удаляем файл $FILE_ALARM (файл для отправки по почте) и ставим признак отправки письма MAIL_FLAG=0.

5. Конец сценария

Категория: Shell (Bash) | Добавил: Akarak (22.09.2009)
Просмотров: 2233 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Меню сайта

Категории раздела
Shell (Bash) [6]
shell скрипты

Интересные сайты
  • sql.ru
  • all-oracle.ru
  • oranet.ru
  • oracloid.ru
  • forum.vingrad.ru

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Поиск

    Copyright MyCorp © 2024
    Используются технологии uCoz