На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
Grih65kop
Сообщения: 145
Сообщение
Grih65kop » 17.04.2012 21:52
Нужно отправить письмо, только если результат предыдущего сценария положительный, на почтовый адрес с ранее полученым результатом.
Код: Выделить всё
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
Сообщение
/dev/random » 17.04.2012 22:01
Grih65kop писал(а): ↑ 17.04.2012 21:52
Есть ли другие варианты? Избавляться от awk?
Да, обычно удобнее сравнивать не awk'ом, а test'ом. Но если допустима привязка к башу, можете рассмотреть вариант использования переменной PIPESTATUS.
Grih65kop
Сообщения: 145
Сообщение
Grih65kop » 17.04.2012 22:28
Можно ,пожалуйста, пример?
Вариант с 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
Сообщение
sash-kan » 17.04.2012 22:49
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. вообще полезный такой пакет·
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 18.04.2012 00:24
Так, на всякий случай, судя по всему, ваяется некая система мониторинга дискового пространства (а параллельно, возможно и ещё каких-то важных параметров). Есть полно готовых выверенных не одной сотней системных администраторов систем мониторинга (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.