2011-04-20 18 views
2

我想在選擇查詢返回特定值後發送電子郵件。當選擇查詢返回特定值時發送電子郵件

我目前管它到一個文本文件,只是爲了給我一些顯示。

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

現在當值返回我選擇「-20」或任何號碼,我將如何去有關創建電子郵件警報,當它變成真正的發送。將其用作監視工具。我正在運行的服務器已經設置了postfix,它已被證實正在工作。

任何信息將不勝感激。

謝謝!

+0

您將通過爲正在使用的shell添加標籤來提高您獲得良好答案的機會。標籤Shell通常由Windows用戶使用。指示bash,ksh,csh或?祝你好運! – shellter 2011-04-21 00:39:30

回答

0
echo Here comes the Sun | mail -s Subject <email-address> 

應發送電子郵件。你需要把它放在正確的if語句中。

0

如果您的查詢返回單行輸出,可能是這樣的。

#!/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 [email protected] ;; 
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 <[email protected]> 
To: you <[email protected]> 
Subject: It is Minus Twenty 

____HERE 
fi 

一些貝殼/有些貓會允許你在同一時間使用此文件和一個名爲文件,避免貓的無用使用。

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

但我恐怕這不是完全便攜的。

grep只是給你一個想法;用不太專門的東西代替它,可能實際上是解析輸出文件並對解析結果執行復雜的邏輯。

相關問題