#1 30.01.2015 08:52:16

igvozd
Administrator
Зарегистрирован: 04.11.2012
Сообщений: 19
IP-адрес

BASH скрипт проверки свободного места на диске

Добрый день!

Есть простой скрипт, который вычисляет свободное место на диске и отправляет уведомление на почту;
Скрипт выполняется через cron каждые, например, 10 минут.

Моя проблема в том, что просто засирается почта от большого количества писем, когда отрабатывает скрипт;
Хочется скрипт довести до совершенства: отправлять уведомление на почту только после изменения значения переменной $freespace на единицу

#!/bin/bash
freespace=`df -m | grep "/dev/vda2" | awk '{print $4}'`
if [ $freespace -lt 20000 ];
then
echo "Warning!!! On the Server running out of space on your hard drive. Freespace - "$freespace"Mb" | mail -s "FreeSpase on the Server" user@site.ru
fi

#2 30.01.2015 08:57:02

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

BASH скрипт проверки свободного места на диске

Складывай значение этой переменной в файл, например в /tmp. Читай его каждый раз при запуске скрипта и сравнивай. Ну и по условию отправляй письмо.

#3 30.01.2015 09:15:08

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

BASH скрипт проверки свободного места на диске

Quote by igvozd
Хочется скрипт довести до совершенства: отправлять уведомление на почту только после изменения значения переменной $freespace на единицу

FS_FILE="/var/tmp/freespace"
if [ -s "$FS_FILE" ]; then
  OLD_FS=$(cat "$FS_FILE)"
else
  OLD_FS=0
fi
if (( OLD_FS != freespace )); then
  # св. место изменилось
  echo "$freespace" >"$FS_FILE"
  # можно отправлять почту
fi


PS: условие лучше поменять на

(( D = OLD_FS - freespace ))
if( D / 1048576 != 0 ))

тогда буде отсылать сообщения, тогда и только тогда, когда разница больше мегабайта (1048576 байт).

#4 30.01.2015 10:27:53

s.xbatob
Administrator
Зарегистрирован: 20.11.2014
Сообщений: 229
IP-адрес

BASH скрипт проверки свободного места на диске

А ещё есть системы мониторинга: nagios, zabbix,.. В них, конечно, сначала разобраться надо, зато потом можете легко добавлять контролируемые объекты.

#5 30.01.2015 10:33:36

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

BASH скрипт проверки свободного места на диске

Quote by s.xbatob
А ещё есть системы мониторинга
а комаров можно из АК-47 расстреливать…

#6 30.01.2015 10:36:06

s.xbatob
Administrator
Зарегистрирован: 20.11.2014
Сообщений: 229
IP-адрес

BASH скрипт проверки свободного места на диске

Quote by s.xbatob
А ещё есть системы мониторинга
а комаров можно из АК-47 расстреливать…

по опыту - желание мониторить ещё что-нибудь появится очень быстро. Всё равно в конце концов придётся такую систему развернуть.

#7 30.01.2015 10:48:25

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

BASH скрипт проверки свободного места на диске

Quote by s.xbatob
по опыту - желание мониторить ещё что-нибудь появится очень быстро. Всё равно в конце концов придётся такую систему развернуть.
ну я же не развернул? *CRAZY*

Нет, я понимаю пользу этих систем на крупных серверах в продакшене, но дома-то зачем? На каком-нить небольшом сервачке это тоже излишне.

#8 02.02.2015 10:35:25

igvozd
Administrator
Зарегистрирован: 04.11.2012
Сообщений: 19
IP-адрес

BASH скрипт проверки свободного места на диске

Складывай значение этой переменной в файл, например в /tmp. Читай его каждый раз при запуске скрипта и сравнивай. Ну и по условию отправляй письмо.


Так и сделал! Спасибо!
Воспользовался конструкцией Bash If..then..else..if..then..fi..fi..

If [ conditional expression1 ]
then
    statement1
    statement2
    .
else
    if [ conditional expression2 ]
    then
        statement3
        .
    fi
fi


И вместо мегабайтов считаю проценты.

А ещё есть системы мониторинга: nagios, zabbix,.. В них, конечно, сначала разобраться надо, зато потом можете легко добавлять контролируемые объекты.

Нет смысла на слабой тачке разворачивать систему мониторинга такого уровня.
Да вообще на любой, если можно написать самому то, что надо!

#9 02.02.2015 10:39:46

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

BASH скрипт проверки свободного места на диске

Quote by igvozd
else if

elif

Quote by igvozd
[ 2 ]

       ((expression))
              The  expression is evaluated according to the rules described below under ARITHMETIC EVALUATION.  If the value of
              the expression is non-zero, the return status is 0; otherwise the return status is 1.  This is exactly equivalent
              to let "expression".

Board footer