私は "高速"スクリプトを書いてから、メールスイッチ(エコーからパイプされる構文)をオフにするために "--nomail"オプションを追加することを検討しました。
私はそれが簡単だと思いましたが、基本的に元のスクリプトをうまく設定していないので、この「オプション」は私を殺しました。
Bashの新機能です...ありがとう!
私の素晴らしい仕事スクリプト! :
## Current threshold value setting
THRESHOLD="80"
## Input Files and Mailx
LOCATIONS="fsIn.txt" ## Edit "fsIn.txt" to add or change filesystems
TOLIST="$(cat toList.txt | tr -s '\n' ' ' )" ## Sets who receives email if an error condition exists
REPLYTO="$(cat replyTo.txt | tr -s '\n' ' ' )" ## sets the reply to email addresses
FROM=”SCRIPT TEAM" ## Sets the "from" address on error emails
SUBJECT="$HOST: ! STORAGE LEVEL MET OR EXCEEDED !" ## Sets the subject line
############
for i in $(cat $LOCATIONS)
do
## Main df pipeline to return usage percentage
CAP=$(df -PH --no-sync "$i" | awk 'NR>1'| awk {'print $5'} | sed 's/.$//')
for i in $(cat $LOCATIONS) #Several different file system locations are ‘catted’ in here . E.g. /dev
do
## Main df pipeline to return usage percentage to stdout and piped to mailx
CAP=$(df -PH --no-sync "$i" | awk 'NR>1'| awk {'print $5'} | sed 's/.$//')
if [ $CAP -ge $THRESHOLD ]
then
(echo
echo "---------- CAPACITY TEST FAILED ---------- "
echo -n " SYSTEM NAME: " ; uname -n
echo -n " USER DETAIL: " ; whoami
echo " TEST AREA: $i "
echo " USED SPACE: $CAP% "
echo " THRESHOLD: $THRESHOLD% "
echo " !!!!!! THRESHOLD EXCEEDED !!!!!! ") | tee >(mailx -s "$SUBJECT" -r "$FROM" -S replyto="$REPLYTO" "$TOLIST")
echo
else
echo
echo "++++++++++ CAPACITY TEST PASSED ++++++++++ "
echo " TEST AREA: $i "
echo " USED SPACE: $CAP% "
echo " THRESHOLD: $THRESHOLD% "
echo " !!! SUCCESS SUCCESS SUCCESS SUCCESS !!! "
echo
fi
done
exit 0
これは非常にうまく動作します!しかし、--nomailオプションを含めるように再設定する方法がわかりません。 「事例」は慎重だと思われますが、ここでは迷子になりました。
どんなアイデアがありますか?
とても感謝しています!
ベストアンサー1
簡単な答えは2つあります。
send_email
toなどのフラグを設定し、true
電子メール抑制パラメータがある場合は、それを無効にするか、falseに設定します。- 出力になる変数または一時ファイルを組み合わせてから、実際の電子メール転送を関数呼び出しに渡して事前に電子メールを作成します。
たとえば、
send_email="true"
handle_email() {
echo "$email_body" | mailx -s "$subject" -r "$from" -S replyto="$replyto" ${recipients[@]}
}
[...]
if [[ "--nomail" == "$1" ]]; then
send_email=false
fi
[...]
if [[ true == "$send_email ]]; then
handle_email
fi