Отправлять письмо только с положительным результатом

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Grih65kop
Сообщения: 145

Отправлять письмо только с положительным результатом

Сообщение Grih65kop »

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

Код: Выделить всё

df -P | awk 'int($5) >= 8' | mail -s '123' 123@ya.ru

Не подходит т.к. письмо будет приходить пустое при отрецательном результате.

Конструкция при которой сравнивается код завершения

Код: Выделить всё

res=`df -P | awk 'int($5) >= 8'`
if [ "$? -eq 0" ] ; then
 echo $res | mail -s '123' 123@ya.ru
fi

подходит, но тут возникает другая проблема.

У конструкции df -P | awk 'int($5) >= не важно число' код завершения все время будет 0.

Есть ли другие варианты? Избавляться от awk?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: Отправлять письмо только с положительным результатом

Сообщение /dev/random »

Grih65kop писал(а):
17.04.2012 21:52
Есть ли другие варианты? Избавляться от awk?

Да, обычно удобнее сравнивать не awk'ом, а test'ом. Но если допустима привязка к башу, можете рассмотреть вариант использования переменной PIPESTATUS.
Спасибо сказали:
Grih65kop
Сообщения: 145

Re: Отправлять письмо только с положительным результатом

Сообщение Grih65kop »

Можно ,пожалуйста, пример?

Вариант с test'ом который мне подсказили на данный момент выглядит немного массивно:

Код: Выделить всё

test -n "$(df -P | awk 'int($5) >=8')" && df -P | awk 'int($5) >=8' | mail -s '123' 123@ya.ru


Про PIPESTATUS пойду гуглить.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Отправлять письмо только с положительным результатом

Сообщение sash-kan »

Grih65kop
есть такой пакет moreutils
а в нём есть программа ifne (run command if the standard input is not empty)
в её man-е даже подходящий пример приводится, как раз про mail:
$ find . -name core | ifne mail -s "Core files found" root

p.s. вообще полезный такой пакет·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Отправлять письмо только с положительным результатом

Сообщение SLEDopit »

Так, на всякий случай, судя по всему, ваяется некая система мониторинга дискового пространства (а параллельно, возможно и ещё каких-то важных параметров). Есть полно готовых выверенных не одной сотней системных администраторов систем мониторинга (munin, cacti, nagios, etc). Возможно, стоит присмотреться к ним.
Однако, возможно, я и ошибаюсь.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали: