Отправить письмо, когда запрос на выборку возвращает определенное значение - PullRequest
2 голосов
/ 21 апреля 2011

Я хочу отправить электронное письмо после того, как запрос на выборку возвращает определенное значение.

В настоящее время я передаю его в текстовый файл, просто чтобы показать его.

echo "SELECT * FROM jobs WHERE status = -20;" | mysql -u user -pXXX -h 
          servername --database=chosenDB >> /var/log/DBcheck.txt

теперь, когда значение возвращается к «-20» или какому-либо другому значению, которое я выберу, как бы я создавал оповещение по электронной почте для отправки, когда оно станет истинным. Используя его в качестве инструмента мониторинга. Сервер, на котором я работаю, уже настроен с постфиксом, который подтверждает свою работу.

любая информация будет принята с благодарностью.

спасибо!

Ответы [ 2 ]

0 голосов
/ 18 августа 2011

Если ваш запрос возвращает одну строку вывода, возможно, что-то вроде этого.

#!/bin/sh

case `echo "SELECT * FROM jobs WHERE status = -20;" |
    mysql -u user -pXXX -h servername --database=chosenDB` in
  -20) echo It is minus twenty | /usr/lib/sendmail -oi you@example.com ;;
esac

Более полезно поместить выходные данные во временный файл и стереть их, если это неинтересно.

#!/bin/sh

t=`mktemp -t muesliXXXXXXX`  # Not entirely portable -- google this bit
trap 'rm -f $t' 0
trap 'exit 127' 1 2 3 5 15

mysql -u user -pXXX -h servername --database=chosenDB <<'____HERE' >$t
    SELECT * FROM jobs WHERE status = -20;
____HERE

if grep -qw '-20' $t; then
  ( cat <<'____HERE'; cat $t) | /usr/lib/sendmail -oi -t
From: Friendly Cron Job <root@example.com>
To: you <you@example.com>
Subject: It is Minus Twenty

____HERE
fi

Некоторые оболочки / некоторые кошки позволят вам использовать здесь документ и названный файл одновременно, избегая бесполезного использования кошки.

cat - $t <<'____HERE' | /usr/lib/sendmail -oi -t

Но, боюсь, это не совсем портативно.

grep просто чтобы дать вам идею; замените его чем-то менее специальным, возможно, фактически проанализируйте выходной файл и выполните сложную логику с результатом анализа.

0 голосов
/ 21 апреля 2011
echo Here comes the Sun | mail -s Subject <email-address>

следует отправить электронное письмо. Вы должны поместить это в правильное выражение if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...