【shell】shell腳本Linux環境mutt發送郵件(實現單郵件循環發送和根據條件循環發送)

      之前用過shell腳本發送報表,不過都是單個腳本發送一個報表,最近使用到根據條件循環發送報表的情況,也從同事那裏學到這個技能。這裏對shell發送郵件做一些總結。

目錄

1.單個腳本實現單封郵件的發送

2.根據條件循環發送--不同條件發送給不同的人

3.mutt參數


1.單個腳本實現單封郵件的發送

這種就很簡單了,直接發送郵件,下面來一個案例。

下面python命令是在python環境下運行python代碼(用來結果轉爲excel文件,最終作爲附件發送)

mutt命令下面再一一講解。

#!/bin/bash
title='***監控'
body='監控內容描述'


reportPath=`pwd -P`
echo "reportPath:"$reportPath
hdfs dfs -get txt2xls.py $reportPath/txt2xls.py

#sql語句  附件1
hive -e "
select * from table
;" > $reportPath/result.txt
 
#sql語句  附件2
hive -e "
select * from dw_htlbizappdb.oversea_result_jiankong
where d >= date_sub('${Today}',10) and d <= '${Today}'
;" > $reportPath/oversea_result.txt

#附件1 發送
python2.7 $reportPath/txt2xls.py $reportPath/result.txt $reportPath/result.xls

#附件2 發送
python2.7 $reportPath/txt2xls.py $reportPath/oversea_result.txt $reportPath/oversea_result.xls

#[email protected]  這是自己配置發送郵件的公共郵件地址  郵件地址中間空格隔開
echo -e $body | cat | mutt -s $title -e "my_hdr from:<[email protected]>" [email protected] [email protected] -a $reportPath/result.xls $reportPath/oversea_result.xls

2.根據條件循環發送--不同條件發送給不同的人

這裏就多了arr1和arr2,二者之間的關係,見代碼中的備註,其中,分爲了有抄送人版本和無抄送人版本,如果需要郵件統一抄送,就保留cc的部分,否則不需要。

#!/bin/sh


body='監控'
EmailPath="/a/b/c"

reportPath=`pwd -P`
echo "reportPath:"$reportPath
hdfs dfs -get txt2xls.py $reportPath/txt2xls.py


#finalhotelgroup 
arr1=("('aa','bb')" "('cc','dd')")


#mail 數組用來循環符合arr1中第一個“”的條件發送arr2中第一個“”中的郵件,依次對應
arr2=("[email protected]" "[email protected]")

#每個郵件都抄送下面cc的郵箱
cc="[email protected];[email protected]"


#sql
esql="select col1,col2,col3            
        from table 
	 "

lsql=""
lmail=""
for ((i=0;i<${#arr1[@]};i++))
do
    lsql=$esql" and col3 in "${arr1[$i]}  #col3用來判定循環
    echo $lsql
    
    lmail=${arr2[$i]}
    echo $lmial
    
    hive -e "$lsql"> $reportPath/report.txt
    python2.7 $reportPath/txt2xls.py $reportPath/report.txt $reportPath/report.xls
    #無郵件抄送人版本
    echo -e $body | cat | mutt -s "監控報表" -e "my_hdr from:<[email protected]>" $lmail -a $reportPath/report.xls
    #有郵件抄送人版本
    echo -e $body | cat | mutt -s "監控報表" -e "my_hdr from:<[email protected]>" $lmail -c $cc -a $reportPath/report.xls

done

3.mutt參數

郵件發送格式:

mutt [-hnpRvxz][-a<文件>][-b<地址>][-c<地址>][-f<郵件文件>][-F<配置文件>][-H<郵件草稿>][-i<文件>][-m<類型>] [-s<主題>][郵件地址]

參數含義:

參 數:
 -a <文件> 在郵件中加上附加文件。
 -b <地址> 指定密件副本的收信人地址。
 -c <地址> 指定副本的收信人地址。
 -f <郵件文件> 指定要載入的郵件文件。
 -F <配置文件> 指定mutt程序的設置文件,而不讀取預設的.muttrc文件。
 -h 顯示幫助。
 -H <郵件草稿> 將指定的郵件草稿送出。
 -i <文件> 將指定文件插入郵件內文中。
 -m <類型> 指定預設的郵件信箱類型。
 -n 不要去讀取程序培植文件(/etc/Muttrc)。
 -p 在mutt中編輯完郵件後,而不想將郵件立即送出,可將該郵件暫緩寄出。
 -R 以只讀的方式開啓郵件文件。
 -s <主題> 指定郵件的主題。
 -v 顯示mutt的版本信息以及當初編譯此文件時所給予的參數。
 -x 模擬mailx的編輯方式。
 -z 與-f參數一併使用時,若郵件文件中沒有郵件即不啓動mutt。

以上就是對shell郵件發送的概述了,以後如果遇到其他情況,再進行補充

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章