摘要:有时候,监控一个系统需要在系统出现警告时通过发送邮件来通知相关的负责人。一种是普通邮件,通过附件描述详细报告一种是高级邮件哈哈,本来就是告警,还不赶快看,还要慢慢下载附件打开看所以将附件内容以直接展示到正文处,并通过样式标记警告。
有时候,监控一个系统需要在系统出现警告时通过shell发送邮件来通知相关的负责人。本文讲讲如何shell发送邮件。
一种是普通邮件,通过附件描述详细报告;一种是高级邮件(哈哈),本来就是告警,还不赶快看,还要慢慢下载附件打开看?所以将附件内容以HTML直接展示到正文处,并通过样式标记警告。
1.安装sendEmail工具
下载、解压、配置环境变量
]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz ]# tar -zxf sendEmail-v1.56.tar.gz -C SendEmail/ #配置环境变量这里不一样,不在profile文件里配置,而是拷贝到系统环境变量已有的路径中 ]# cd ~/myApp/SendEmail/ ]# cp sendEmail /usr/local/bin/
2.开启邮箱的SMTP
本文使用QQ邮件作为发送者
设置 -> 账户 -> 下图中开启
3.发送邮件
QQ邮箱对SMTP有如下说明:
#!/bin/bash RECIVER="Wish0123@163.com" SENDER="964478654@qq.com" SENDER_USERNAME=964478654 #密码填写SMTP第三方客户端授权码 SENDER_PASSWD=*********** ATTACHMENT_PATH=/root/workspace/sh/attach_test.txt #如下图描述,作为邮件发送方应填这个hostname STMP_HOST=smtp.qq.com MESSAGEL_SUBJECT="Have Fun" MESSAGE_BODY="报警啊..." sendEmail -f $SENDER -t $RECIVER -a $ATTACHMENT_PATH -s $STMP_HOST -xu $SENDER_USERNAME -xp $SENDER_PASSWD -u $MESSAGEL_SUBJECT -m $MESSAGE_BODY -o message-charset=utf-8
发送后报错了:
******************************************************************* Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER possibly with SSL_ca_file|SSL_ca_path for verification. If you really don"t want to verify the certificate and keep the connection open to Man-In-The-Middle attacks please set SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application. ******************************************************************* at /usr/local/bin/sendEmail line 1906. invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 444.
意思是SSL版本不对,原因是在cent7中Perl的版本5.16,而应该使用更低版本。或者不用SSL,也就需要在脚本最后一行的sendEmail命令添加一个参数-o tls=no
sendEmail -f $SENDER -t $RECIVER -a $ATTACHMENT_PATH -s $STMP_HOST -xu $SENDER_USERNAME -xp $SENDER_PASSWD -u $MESSAGEL_SUBJECT -m $MESSAGE_BODY -o message-charset=utf-8 -o tls=no
发送成功了!
我擦,居然被当成诈骗钓鱼邮件。。
4.HTML版
邮箱直接展示html需要两个条件:
一是把要展示的数据使用html标签封装起来,就可以随意增加样式了;
二是在sendEmail增加参数-o message-content-type=html
这里是根据系统内存情况发送系统邮件,当集群中机器的使用内存超过总内存80%的机器信息标红。
[root@NN1 sh]# cat memory_info ip consum free total 192.168.1.10 100 100 200 192.168.1.11 1 239 240 192.168.1.12 350 50 400 192.168.1.13 40 24 64 192.168.1.14 77 33 110 192.168.1.15 150 250 400
编写脚本
#!/bin/bash -x RECIVER="Wish0123@163.com" SENDER="964478654@qq.com" SENDER_USERNAME=964478654 #密码填写SMTP第三方客户端授权码 SENDER_PASSWD=xuxjxankheuubcjd STMP_HOST=smtp.qq.com MESSAGEL_SUBJECT="Have Fun" HTML_PATH=html_path echo "
ip | consum | free | total | ">>$HTML_PATH echo "">>$HTML_PATH create_tr() { i=2 lines=$(cat memory_info | wc -l) while [ $i -le $lines ] do j=1 ip=$(awk "NR==i {print $j}" i=$i j=$j memory_info) let "j++" m=$(awk "NR==i {print $j}" i=$i j=$j memory_info) let "j++" f=$(awk "NR==i {print $j}" i=$i j=$j memory_info) let "j++" t=$(awk "NR==i {print $j}" i=$i j=$j memory_info) tr="
---|---|---|---|
"$ip" | ">>$HTML_PATH echo ""$m" | ">>$HTML_PATH echo ""$f" | ">>$HTML_PATH echo ""$t" | ">>$HTML_PATH echo "
发送成功!
好玩吧~
参考文章:
https://blog.csdn.net/leshami...
https://my.oschina.net/u/4005...
https://blog.csdn.net/wz94732...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/54883.html
摘要:有时候,监控一个系统需要在系统出现警告时通过发送邮件来通知相关的负责人。一种是普通邮件,通过附件描述详细报告一种是高级邮件哈哈,本来就是告警,还不赶快看,还要慢慢下载附件打开看所以将附件内容以直接展示到正文处,并通过样式标记警告。 有时候,监控一个系统需要在系统出现警告时通过shell发送邮件来通知相关的负责人。本文讲讲如何shell发送邮件。一种是普通邮件,通过附件描述详细报告;一种...
摘要:函数携带目的地址主题邮件体模板和一组关键字参数。许多扩展操作是在假设有活动的应用程序和请求上下文的情况下进行的。但是当函数在一个不同的线程上执行,应用程序上下文需要人为地创建使用。例如,执行函数可以将邮件发送到的任务队列中。 许多类型的应用程序都会在某些事件发生的时候通知用户,常用的沟通方法就是电子邮件。尽管在Flask应用程序中,可以使用Python标准库中的smtplib包来发送电...
阅读 1671·2021-11-11 10:58
阅读 4127·2021-09-09 09:33
阅读 1234·2021-08-18 10:23
阅读 1526·2019-08-30 15:52
阅读 1600·2019-08-30 11:06
阅读 1830·2019-08-29 14:03
阅读 1475·2019-08-26 14:06
阅读 2870·2019-08-26 10:39