使用shell脚本发送邮件带附件

本文介绍如何在Linux环境下使用SendEmail脚本发送带有附件和HTML格式内容的邮件,包括脚本配置、邮件发送测试及如何实现带有表格告警的邮件发送。

前置条件

要使用脚本发送邮件,必须设置发送邮箱开启IMAP/SMTP服务。否则将会报错。

同时脚本所在服务器需要有sendEmail命令

#下载安装包
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
#创建目录
mkdir -p /usr/local/bin
#解压
tar zxf sendEmail-v1.56.tar.gz -C /usr/src/
#进入解压目录
cd /usr/src/sendEmail-v1.56/
#复制程序到指定目录
cp -a sendEmail /usr/local/bin/
#给执行权限
chmod +x /usr/local/bin/sendEmail
#安装组件
yum install perl-Net-SSLeay perl-IO-Socket-SSL -y

使用脚本发送测试邮件

#!/bin/bash

#收件箱
EMAIL_RECIVER="li__yukun@163.com"
#发送者邮箱
EMAIL_SENDER=2504413761@qq.com
#邮箱用户名
EMAIL_USERNAME=2504413761
#邮箱密码
#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务,其次发送邮件的密码需要使用在开启POP3/SMTP服务时候腾讯提供的第三方客户端登陆码。
EMAIL_PASSWORD=vxddqmqvrxhqebdb

#附件路径
FILE1_PATH="/root/anaconda-ks.cfg"

#smtp服务器地址
EMAIL_SMTPHOST=smtp.qq.com

EMAIL_TITLE="测试"
EMAIL_CONTENT="谢谢!"

sendEmail -f ${EMAIL_SENDER} -t ${EMAIL_RECIVER} -s ${EMAIL_SMTPHOST} -u ${EMAIL_TITLE} -xu ${EMAIL_USERNAME} -xp ${EMAIL_PASSWORD} -m ${EMAIL_CONTENT} -a ${FILE1_PATH} -o message-charset=utf-8

[root@hadoop ~]# ./test.sh 
Apr 12 14:49:44 hadoop sendEmail[11425]: Email was sent successfully!

执行成功查看结果

e8a4a1af29405120c3c1b813bf78caffbc3.jpg

03243f26e56d508ccd0e2d12aff14808650.jpg

带表格告警的邮件

准备数据/root/test.txt
如果cpu大于80那么就标红

[root@hadoop ~]# cat test.txt 
192.168.232.8 90 95 10
192.168.232.9 20 40 40
192.168.232.10 80 50 40
[root@hadoop ~]# pwd
/root

[root@hadoop ~]# cat test.sh 
#!/bin/bash

EMAIL_RECIVER="li__yukun@163.com"
#发送者邮箱
EMAIL_SENDER=2504413761@qq.com
#邮箱用户名
EMAIL_USERNAME=2504413761
#邮箱密码
#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务,其次发送邮件的密码需要使用在开启POP3/SMTP服务时候腾讯提供的第三方客户端登陆码。
EMAIL_PASSWORD=vxddqmqvrxhqebdb

FILE1_PATH="/root/anaconda-ks.cfg"

#smtp服务器地址
EMAIL_SMTPHOST=smtp.qq.com

EMAIL_TITLE="测试"
EMAIL_CONTENT="谢谢!"


html_input(){
echo "<tr>
<td>$1</td>
<td>$2</td>
<td>$3</td>
<td>$4</td>
</tr>" >>/root/mail.html
}

html_input_red(){
echo "<tr bgcolor="#FF0000">
<td>$1</td>
<td>$2</td>
<td>$3</td>
<td>$4</td>
</tr>" >>/root/mail.html
}


set_info(){
i=1
echo "
<table border=1>
<tr>
<th>主机ip</th>
<th>cpu使用率</th>
<th>内存使用率</th>
<th>磁盘使用率</th>
</tr>" > /root/mail.html
    host_list=$(awk '{print $1}' /root/test.txt) #主机信息
    for html_host in $host_list
    do
        j=2

        html_cpu=$(awk 'NR==i { print $j}' i=$i j=$j /root/test.txt) #本条对应cpu
        let "j++"
        html_mem=$(awk 'NR==i { print $j}' i=$i j=$j /root/test.txt) #本条对应内存
        let "j++"
        html_dis=$(awk 'NR==i { print $j}' i=$i j=$j /root/test.txt) #本条对应磁盘

        if [ $html_cpu -gt 80 ];then
            html_input_red $html_host $html_cpu $html_mem $html_dis #构造每行表格信息
        else
            html_input $html_host $html_cpu $html_mem $html_dis #构造每行表格信息
        fi

        let "i++"
        echo $html_host $html_cpu $html_mem $html_dis $i $j
    done
echo "</table>" >> /root/mail.html
}     # 制作mail.html,并使用邮件发送

set_info

EMAIL_EXCEL=$(cat /root/mail.html)


sendEmail -f ${EMAIL_SENDER} -t ${EMAIL_RECIVER} -s ${EMAIL_SMTPHOST} -u ${EMAIL_TITLE} -xu ${EMAIL_USERNAME} -xp ${EMAIL_PASSWORD} -m ${EMAIL_EXCEL} ${EMAIL_CONTENT} -a ${FILE1_PATH} -o message-charset=utf-8 -o message-content-type=html 
[root@hadoop ~]# 


结果:

[root@hadoop ~]# ./test.sh 
192.168.232.8 90 95 10 2 4
192.168.232.9 20 40 40 3 4
192.168.232.10 80 50 40 4 4
Apr 12 17:12:21 hadoop sendEmail[12064]: Email was sent successfully!

mail.html文件

<table border=1>
<tr>
<th>主机ip</th>
<th>cpu使用率</th>
<th>内存使用率</th>
<th>磁盘使用率</th>
</tr>
<tr bgcolor=#FF0000>
<td>192.168.232.8</td>
<td>90</td>
<td>95</td>
<td>10</td>
</tr>
<tr>
<td>192.168.232.9</td>
<td>20</td>
<td>40</td>
<td>40</td>
</tr>
<tr>
<td>192.168.232.10</td>
<td>80</td>
<td>50</td>
<td>40</td>
</tr>
</table>


896bce5d79c53b3dc4eb362e8ba534f3edf.jpg

f1b197429c75986bfaf515aa0b3b511dc39.jpg

转载于:https://my.oschina.net/u/4005872/blog/3035997

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值